Pyinstaller 打包exe教程及问题解决


Posted in Python onAugust 16, 2019

安装

pip insatll Pyinstaller

参数

pyinstaller -Fw main.py

参数 概述
-F,-onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, ?onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, ?tk 在部署时包含 TCL/TK
-a, ?ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, ?debug 产生debug版本的可执行文件
-w,?windowed,?noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-s,?strip 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
-X, ?upx 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
-o DIR, ?out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
-p DIR, ?path=DIR 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
?icon= 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxx.py
-v FILE, ?version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, ?name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

注意事项

  • 如果程序有采用外部文件,如配置文件, 需要将文件放在dist中
  • -F 适合生成一个单一可执行的文件
  • -o 适用于多个文件引用情况,或者框架的结构

打包进程相关代码失败

例如编写一些进程相关的shell命令,打包失败,一般是使用 -F 可以成功,但是执行exe时有cmd弹窗,这非常不美观, 如果使用-Fw c参数执行exe 直接失败。 这种情况有两种解决方案。

方案一: 使用 pyinstaller -Dw file.py 生成的是一个目录文件。 程序执行成功,无黑名终端弹窗情况。

方案二: 起用 os.popen() 方法, 改用subprocess.Popen() 模块

​ 下面是我的测试,亲测成功, 参数一定要配置好,否则程序执行失败!

import subprocess
def checkprocess():
  processnames = ['EXCEL.EXE']
  for processname in processnames:
    p = subprocess.Popen('taskkill /F /IM %s' %processname,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    p.wait()
checkprocess()

有空写一个 关于subprocess的教程,详细研究一下他的参数配置

工欲善其事,必先利其器!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基本语法练习实例
Sep 19 Python
Python使用wxPython实现计算器
Jan 30 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
Python 判断奇数偶数的方法
Dec 20 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
python系列 文件操作的代码
Oct 06 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
django model object序列化实例
Mar 13 Python
记录模型训练时loss值的变化情况
Jun 16 Python
如何利用python发送邮件
Sep 26 Python
python调试工具Birdseye的使用教程
May 25 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 #Python
Python Web框架之Django框架文件上传功能详解
Aug 16 #Python
基于 Django 的手机管理系统实现过程详解
Aug 16 #Python
python创建与遍历List二维列表的方法
Aug 16 #Python
python每天定时运行某程序代码
Aug 16 #Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 #Python
Python Web框架之Django框架Form组件用法详解
Aug 16 #Python
You might like
php 一元分词算法
2009/11/30 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
解析isset与is_null的区别
2013/08/09 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
jquery获取当前日期的方法
2015/01/14 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
python主线程捕获子线程的方法
2018/06/17 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python实现元素等待代码实例
2019/11/11 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
日语专业个人的求职信
2013/12/03 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
战友聚会邀请函
2014/01/18 职场文书
法律系毕业生求职信
2014/05/28 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
Python基础之pandas数据合并
2021/04/27 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL