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网页请求urllib2模块简单封装代码
Feb 07 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
Python实现自动签到脚本功能
Aug 20 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
Python自动化测试PO模型封装过程详解
Jun 22 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
详解Immutable及 React 中实践
2018/03/01 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
python:socket传输大文件示例
2017/01/18 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
详解python itertools功能
2020/02/07 Python
python线程join方法原理解析
2020/02/11 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
三方合作协议书范本
2014/04/18 职场文书
个性车贴标语
2014/06/24 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
对学校的意见和建议
2015/06/04 职场文书
2019广播稿怎么写
2019/04/17 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang