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字符串详细介绍
May 09 Python
python实现ping的方法
Jul 06 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
Python中字典和集合学习小结
Jul 07 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
Python3 webservice接口测试代码详解
Jun 23 Python
keras:model.compile损失函数的用法
Jul 01 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
Python try except else使用详解
Jan 12 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中用正则表达式清除字符串的空白
2011/01/17 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
php缓冲输出实例分析
2015/01/05 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
javascript radio 联动效果
2009/03/04 Javascript
jquery json 实例代码
2010/12/02 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
深入理解js promise chain
2016/05/05 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python实现2014火车票查询代码分享
2014/01/10 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
2014年保洁工作总结
2014/11/24 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
华清池导游词
2015/02/02 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
公司周年庆寄语
2019/06/21 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
CSS基础详解
2021/10/16 HTML / CSS