关于python打包的那点事儿
安装 pyinstaller 打包工具
pip install pyinstaller
执行打包命令
pyinstaller.exe -F -c --clean .\####.py
主要参数
- -F, --onefile 打包一个单个文件,如果你的代码都写在了一个py文件的话,可以使用这个命令,如果是多个py文件,就别用;
- -D, --onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架的形式编写工具代码,代码易于维护;
- -a, --ascii 不包含unicode编码的支持(包括默认值:如果可用)
- -c, --console 使用控制台子系统执行(默认),只对windows有效
- -w, --windowed, --noconsole 使用windows子系统执行,当程序启动的时候不会打开命令行(只对windows有效)
- -i , --icon=<File.ico>将file.ico添加为打包的exe文件的图表,只对windows系统有效
- –icon=<File.exe,n>将file.exe的第n个图标添加为可执行文件的资源,只对windows系统有效
- -n Name,–name=Name 可选的项目,生成的.spec文件的名字和exe名字
- -p 设置导入路径(和使用PYTHONPATH效果相似),可以使用路径分隔符(windows使用分好,linux使用冒号),制定多个目录的时候可以指定多个-p参数来设置,让pyinstaller自己去找程序的资源
- –key KEY 用于加密Python字节码的密钥
- –add-data 可以将一些非二进制文件添加到exe文件中进行打包,参数为格式为static;static
- –distpath 指定打包后的程序存放目录,exe文件默认存放在当前目录下的dist目录中
- –workpath 为输出的所有临时文件指定存放目录,默认为当前目录下的build目录
打包后文件较大,有以下两种方式可以进行优化
1、安装upx
未安装的时候显示
安装后显示
windows下如何安装
- (1) 到官网 https://upx.github.io/ 下载UPX, 下载下来是一个压缩包
- (2) 解压得到 upx.exe文件
- (3) 把upx.exe拷贝到这个目录中 C:\Users\admin\AppData\Roaming\Python\Python39\Scripts ;我的目录是这里
- (4) 重启 cmd,再执行打包命令
2、使用 Pipenv 在虚拟机中进行打包,只安装必要的包
- 安装 Pipenv
pip install pipenv
- 进入虚拟机,输入这个命令,我们就进入到了新建的虚拟环境。如果你这时候使用命令 pip list 并发现里面只有很少的库,这就说明我们成功进入虚拟环境了
pipenv shell
- 安装依赖库
pipenv install pyinstaller
。。。
。。。
。。。等等
- 再次查看 pip list 时,如果都成功安装好了,我们就可以开始打包了
windows 与 macos都可以安装此工具,如果需要打包好的可执行文件在对应平台上运行,需要在各自平台进行打包,否则需要安装虚拟机(不推荐,特别麻烦)