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开发的小球完全弹性碰撞游戏代码
Oct 15 Python
理解python多线程(python多线程简明教程)
Jun 09 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
Python实现Linux中的du命令
Jun 12 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
python计算两个数的百分比方法
Jun 29 Python
python 反向输出字符串的方法
Jul 16 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
Python如何在main中调用函数内的函数方式
Jun 01 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
Javascript----文件操作
2007/01/18 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
js实现计算器功能
2020/08/10 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
python实现简单温度转换的方法
2015/03/13 Python
python实现井字棋游戏
2020/03/30 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
django主动抛出403异常的方法详解
2019/01/04 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
tensorflow的计算图总结
2020/01/12 Python
python的列表List求均值和中位数实例
2020/03/03 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
告诉你怎样写创业计划书
2014/01/27 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书