PyInstaller
可以将 python script 打包成可执行文件。
pip install pyinstaller
pyinstaller
文档 : https://pyinstaller.readthedocs.io/en/stable/usage.html
打包成单个文件
pyinstaller -F test.py
关闭upx即可
pyinstaller -F --noupx test.py
upx下载
: https://github.com/upx/upx/releases ,将upx.exe添加到环境变量
linux/WSL
: sudo apt install upx
Usage: upx [-123456789dlthVL] [-qvfk] [-o file] file..
upx -5 -k test.exe #压缩级别:5 ,将原始文件备份
upx --lzma sha512sum.exe #pyinstaller默认压缩方式
pyinstaller -F test.py #打包
$tree
.
├── __pycache__
│ └── test.cpython-37.pyc
├── build
│ └── test
│ ├── Analysis-00.toc
│ ├── EXE-00.toc
│ ├── PKG-00.pkg
│ ├── PKG-00.toc
│ ├── PYZ-00.pyz
│ ├── PYZ-00.toc
│ ├── base_library.zip
│ ├── test.exe.manifest
│ ├── warn-test.txt
│ └── xref-test.html
├── dist
│ └── test.exe
├── test.py
└── test.spec
4 directories, 14 files
dist/test.exe #打包完的文件
编辑器打开build/test/Analysis-00.toc
,找到VCRUNTIME140.dll
所在行,('VCRUNTIME140.dll', 'd:\\anaconda3\\VCRUNTIME140.dll', 'BINARY')
,问题出在VCRUNTIME140.dll
的版本。
将D:\Anaconda3\vcruntime140.dll
重命名为vcruntime140.dll.bak
将C:\Windows\System32\vcruntime140.dll
复制到D:\Anaconda3
D:\Anaconda3
为Anaconda python3
的安装路径。
查看C:\Windows\System32\vcruntime140.dll
的属性\详细信息
,版本号为14.21.27702.2
。在文件地址输入控制面板\程序\程序和功能
,找到了vcruntime140.dll
的安装程序VC++ 2015-2019 v14.21.27702.2
。
若vcruntime140.dll
的版本版本比较低,下载VC++ 2015-2019,具体原因:Visual C++ 2015、2017 和 2019 都共享相同的可再发行软件文件,之前的版本使用独立runtime
。
将打包好文件传到win7虚拟机运行不了:同样安装VC++ 2015-2019
。