python一般不建议打包,基本上都是命令行运行,如果实在要打包python3可以用pyinstaller
请使用官方原版python打包!!!
Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去。
注意打包出来文件会非常大(原理就是简单粗暴直接把所有包都封装进去了)
比如8KB的程序打包后是292 MB。。。。。(看个人情况导入的包越多越大)
然后建议用pipenv搭建虚拟环境后打包。
#建立虚拟环境
pipenv install
#进入虚拟环境
pipenv shell
#安装模块
pip install 小工具.py里面用到的模块
#打包的模块也要安装
pip install pyinstaller
#开始打包
pyinstaller -Fw E:\test\url_crawler.py
这是不用虚拟环境打包的方法
首先安装2个库
pip install pyinstaller
pip install pywin32
或者去下载pywin32的exe安装包注意要和自己的python版本兼容
pyinstaller -F demo.py
参数含义
-F指定打包后只生成一个exe格式的文件
-D–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c–console, –nowindowed 使用控制台,无界面(默认)
-w–windowed, –noconsole 使用窗口,无控制台
-p添加搜索路径,让其找到对应的库。
-i改变生成程序的icon图标
打包成功后同一目录下会出现dist,build,demo.spec 三个文件
打包好的exe文件在dist目录里面(其他都可以删了)
问题1:RecursionError: maximum recursion depth exceeded
这是迭代数过高python默认为900,在demo.spec 文件头地二行添加下面语句
import sys
sys.setrecursionlimit(5000)
删除dist,build文件夹 然后cmd命令行执行解决
pyinstaller demo.spec
问题2:Exception: Cannot find existing PyQt5 plugin directories Paths checked: C:/qt5b/qt_1524647842210/_h_env/Library/plugins
手动新建上面的文件夹目录把pyqt5.dll,pyqt5qmlplugin.dll 两个文件放进去
每个人的报错路径都不一样请看自己的路径是什么,其实用-p 选项也应该能指定包路径的我没研究
删除dist,build文件夹 然后重新执行打包程序
pyinstaller demo.spec
参考连接
https://www.zhihu.com/question/268397385/answer/611317903