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中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
连接Python程序与MySQL的教程
Apr 29 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
利用Python破解斗地主残局详解
Jun 30 Python
详解Django之auth模块(用户认证)
Apr 17 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
python使用原始套接字发送二层包(链路层帧)的方法
Jul 22 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
python制作抽奖程序代码详解
Jan 15 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
jquery 快速回到页首的方法
2013/12/05 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Python计算一个文件里字数的方法
2015/06/15 Python
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
图解Python变量与赋值
2018/04/03 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
服装厂厂长职责
2013/12/16 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
党支部换届选举方案
2014/05/08 职场文书
2014组织生活会方案
2014/05/19 职场文书
求职自我推荐信
2014/06/25 职场文书
投标承诺函格式
2015/01/21 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers