在使用anaconda+vscode写完python代码之后,相信很多人都会这样一个疑问:我们如何将这些python程序提供给普通用户使用呢?伟大的前辈早已替我们想好了办法——python程序的打包。
python打包的方法主要有4种:
- py2exe
- pyinstaller
- cx_Freeze
- nuitka
其中,pyinstaller是目前应用最多的python打包工具,因此我选择了pyinstaller工具来进行打包。
优点:
- 可将python文件转成可执行文件
- 跨平台(支持Windows和Linux)
- 输出的可以是单一目录,也可以是一个单独的打好包的可执行文件。py2exe貌似输出目录。
- 智能支持python的第三方模块如PyQt,外部数据文件等
- 支持EGG格式文件
- 可执行文件可以用UPX压缩,二进制压缩方式
- 支持控制台和视窗两种方式。
- 可以选择exe文件的图标 (Windows only)
- 支持 COM server (Windows only)
缺点:
- import导入的问题
安装pyinstaller
在vscode的anaconda环境下执行pip命令:
pip install pyinstaller
由于网络原因安装失败的,可以尝试用手机流量分享热点下载(总共3.5MB)。
使用pyinstaller
- 普通打包(带控制台窗口)
pyinstaller main.py
- GUI程序打包(屏蔽控制台窗口)
pyinstaller mainwindow.py --noconsole
- 完全打包(类似静态编译的APP)
pyinstaller -F mainwindow.py --noconsole
常见问题
- 打包时出现“ModuleNotFoundError: No module named 'Crypto.Math'”的错误
pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome
- win10下尽量不要使用numpy,会导致打包过大且链接库缺失,可使用list替代,如果一定要用numpy,可以尝试在win7下进行打包