解决PyInstaller vcruntime140.dll没有被指定在Windows上运行

PyInstaller

PyInstaller可以将 python script 打包成可执行文件。

安装
pip install pyinstaller

使用

pyinstaller文档 : https://pyinstaller.readthedocs.io/en/stable/usage.html

打包成单个文件

pyinstaller -F test.py

解决vcruntime140.dll没有被指定在Windows上运行(1)

关闭upx即可

pyinstaller -F --noupx test.py

解决vcruntime140.dll没有被指定在Windows上运行(2)

开启upx

upx下载 : https://github.com/upx/upx/releases ,将upx.exe添加到环境变量

linux/WSL : sudo apt install upx

upx简单使用
Usage: upx [-123456789dlthVL] [-qvfk] [-o file] file..
upx -5 -k test.exe    #压缩级别:5 ,将原始文件备份
upx  --lzma sha512sum.exe    #pyinstaller默认压缩方式
问题分析

解决PyInstaller vcruntime140.dll没有被指定在Windows上运行_第1张图片

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:\Anaconda3Anaconda python3的安装路径。

查看C:\Windows\System32\vcruntime140.dll属性\详细信息,版本号为14.21.27702.2。在文件地址输入控制面板\程序\程序和功能,找到了vcruntime140.dll的安装程序VC++ 2015-2019 v14.21.27702.2
解决PyInstaller vcruntime140.dll没有被指定在Windows上运行_第2张图片
vcruntime140.dll的版本版本比较低,下载VC++ 2015-2019,具体原因:Visual C++ 2015、2017 和 2019 都共享相同的可再发行软件文件,之前的版本使用独立runtime

将打包好文件传到win7虚拟机运行不了:同样安装VC++ 2015-2019

你可能感兴趣的:(win10,Python)