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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python函数缺省值与引用学习笔记分享
Feb 10 Python
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
django如何连接已存在数据的数据库
Aug 14 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
python3处理word文档实例分析
Dec 01 Python
python time.strptime格式化实例详解
Feb 03 Python
利用Python+OpenCV三步去除水印
May 28 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编写的导航条程序
2006/10/09 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
分享php邮件管理器源码
2016/01/06 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
javascript实现拖拽碰撞检测
2020/03/12 Javascript
Python实现类的创建与使用方法示例
2017/07/25 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
详解python配置虚拟环境
2019/04/08 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
国际贸易系求职信
2014/08/09 职场文书
中队活动总结
2014/08/27 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
优秀员工自荐书
2015/03/06 职场文书
公司开业主持词
2015/07/02 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
学习经验交流会策划书
2015/11/02 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis