【问题标题】:Error when creating executable file with pyinstaller使用 pyinstaller 创建可执行文件时出错
【发布时间】:2016-12-13 05:03:54
【问题描述】:
我正在尝试使用 pyinstaller 为我的 python 脚本创建一个 exe,每次遇到可以在 pastebin here 中找到的错误时。
另外,当我双击 exe 文件时,它会显示此错误:
C:Users\Afro\AppData\Local\Temp_MEI51322\VCRUNTIME140.dll 不是为在 Windows 上运行而设计的,或者它包含错误。尝试使用原始安装介质重新安装程序,或联系您的系统管理员或软件供应商寻求支持。错误状态0xc000007b
然后是这个:
加载 Python DLL 时出错:
C:\Users\Afro\AppData\Local\Temp_MEI51322\python35.dll(错误代码193)
请问怎么了?
【问题讨论】:
标签:
python
python-3.x
exe
pyinstaller
【解决方案1】:
我被类似的问题困扰着。在您的情况下,UPX 可能会破坏 vcruntime140.dll。
解决方案是关闭 UPX,因此只需将 --noupx 添加到您的 pyinstaller 调用中。
pyinstaller --noupx --onedir --onefile --windowed get.py
这里长解释:UPX breaking vcruntime140.dll (64bit)
【讨论】:
-
我过去遇到过同样的问题,我找到了一个选项,可以通过添加 --upx-exclude FILE 来从 UPX 进程中排除 vcruntime140.dll,以防止在使用 upx 时压缩二进制文件。如果 upx 在压缩过程中损坏了某些二进制文件,通常会使用此选项。 FILE 是没有路径的二进制文件的文件名。此选项可以多次使用。 pyinstaller --upx-exclude=vcruntime140.dll --onefile --windowed get.py搜搜:pyinstaller.readthedocs.io/en/stable/…
【解决方案2】:
我也遇到过这个问题,根本原因是我使用upx压缩文件大小。解决办法是排除不应该被upx压缩的文件:
pyinstaller --onefile --console --upx-dir=/path/to/upx --upx-exclude=vcruntime140.dll --upx-exclude=python36.dll my_script.py
【解决方案3】:
在我的情况下是:
pyinstaller --clean --win-private-assemblies --noupx --onedir --onefile script.py
--windowed 导致 wxWidgets 出现问题
【解决方案4】:
我尝试使用此版本的 Pyinstaller 命令,将此命令添加到 .bat 文件并执行 .bat 文件。它对我有用:
pyinstaller --log-level=WARN ^
--upx-dir <PATH_TO_UPX.exe_FILE> ^
--upx-exclude vcruntime140.dll ^
--upx-exclude ucrtbase.dll ^
--upx-exclude qwindows.dll ^
--upx-exclude libegl.dll ^
--name <NAME_OF_APPLICATION> ^
--onefile --windowed ^
<PY_DEPENDENT_FILES.py>