pyinstaller 和 onefile 构建导致错误加载 Python DLL(错误代码 14001) [英] pyinstaller and onefile build causes Error loading Python DLL (error code 14001)

查看:169
本文介绍了pyinstaller 和 onefile 构建导致错误加载 Python DLL(错误代码 14001)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 pyinstaller 从我的脚本文件中创建一个 exe.我的脚本是mysql_backup.py

I use pyinstaller to create an exe out of my script file. My script is mysql_backup.py

我跑

pyinstaller --onefile mysql_backup.py

输出

52 INFO: wrote
C:\Users\vlahopou\PycharmProjects\TestClient\mysql_backup.spec
73 INFO: Testing for ability to set icons, version resources...
104 INFO: ... resource update available
105 INFO: UPX is not available.
128 INFO: Processing hook hook-os
219 INFO: Processing hook hook-time
223 INFO: Processing hook hook-cPickle
276 INFO: Processing hook hook-_sre
368 INFO: Processing hook hook-cStringIO
446 INFO: Processing hook hook-encodings
457 INFO: Processing hook hook-codecs
831 INFO: Extending PYTHONPATH with C:\Users\vlahopou\PycharmProjects\TestClient
831 INFO: checking Analysis
832 INFO: building Analysis because out00-Analysis.toc non existent
832 INFO: running Analysis out00-Analysis.toc
832 INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
902 INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ...
902 WARNING: Assembly not found
902 ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found
996 INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ...
996 WARNING: Assembly not found
996 ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found
1075 INFO: Analyzing C:\Python27\lib\site-packages\PyInstaller\loader\_pyi_bootstrap.py
1088 INFO: Processing hook hook-os
1101 INFO: Processing hook hook-site
1117 INFO: Processing hook hook-encodings
1213 INFO: Processing hook hook-time
1217 INFO: Processing hook hook-cPickle
1270 INFO: Processing hook hook-_sre
1375 INFO: Processing hook hook-cStringIO
1470 INFO: Processing hook hook-codecs
1900 INFO: Processing hook hook-pydoc
2013 INFO: Processing hook hook-email
2056 INFO: Processing hook hook-httplib
2092 INFO: Processing hook hook-email.message
2148 INFO: Analyzing C:\Python27\lib\site-packages\PyInstaller\loader\pyi_importers.py
2181 INFO: Analyzing C:\Python27\lib\site-packages\PyInstaller\loader\pyi_archive.py
2210 INFO: Analyzing C:\Python27\lib\site-packages\PyInstaller\loader\pyi_carchive.py
2242 INFO: Analyzing C:\Python27\lib\site-packages\PyInstaller\loader\pyi_os_path.py
2246 INFO: Analyzing mysql_backup.py
2328 INFO: Processing hook hook-xml
2427 INFO: Processing hook hook-xml.sax
2471 INFO: Processing hook hook-pyexpat
2474 INFO: Hidden import 'codecs' has been found otherwise
2474 INFO: Hidden import 'encodings' has been found otherwise
2474 INFO: Looking for run-time hooks
2746 INFO: Using Python library C:\WINDOWS\system32\python27.dll
2846 INFO: Warnings written to C:\Users\vlahopou\PycharmProjects\TestClient\build\mysql_backup\warnmysql_backup.txt
2858 INFO: checking PYZ
2858 INFO: rebuilding out00-PYZ.toc because out00-PYZ.pyz is missing
2858 INFO: building PYZ (ZlibArchive) out00-PYZ.toc
3756 INFO: checking PKG
3756 INFO: rebuilding out00-PKG.toc because out00-PKG.pkg is missing
3757 INFO: building PKG (CArchive) out00-PKG.pkg
5257 INFO: checking EXE
5259 INFO: rebuilding out00-EXE.toc because mysql_backup.exe missing
5259 INFO: building EXE from out00-EXE.toc
5262 INFO: Appending archive to EXE C:\Users\vlahopou\PycharmProjects\TestClient\dist\mysql_backup.exe

当我尝试在没有安装 python 的机器上执行这个时,问题就出现了.我希望能够提取一个与 python 捆绑在一起的 exe,这样当用户想要运行它时它就没有任何依赖项.pyinstaller 可以吗?我的文件在生成它的机器上正常运行.

The problems comes when I try to execute this on a machine that didn't have python installed. I want to be able to extract an exe with python bundled so that it doesn't have any dependencies when user wants to run it. Is it possible with pyinstaller? My file runs normally on the machine that produced it.

调试信息

C:\>mysql_backup.exe
LOADER: executable is C:\mysql_backup.exe
LOADER: homepath is C:
LOADER: _MEIPASS2 is NULL
LOADER: archivename is C:\mysql_backup.exe
LOADER: Extracting binaries
LOADER: Executing self as child
LOADER: Setting up to run child
LOADER: Creating child process
LOADER: Waiting for child process to finish...
LOADER: executable is C:\mysql_backup.exe
LOADER: homepath is C:
LOADER: _MEIPASS2 is C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI21882
LOADER: archivename is C:\mysql_backup.exe
LOADER: Already in the child - running user's code.
LOADER: manifestpath: C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI21882\mysql_backup.exe.manifest
LOADER: Error activating the context
LOADER: Python library: C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI21882\python27.dll
Error loading Python DLL: C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI21882\python27.dll (error code 14001)
LOADER: Deactivating activation context
LOADER: Releasing activation context
LOADER: Done
LOADER: Back to parent
LOADER: Doing cleanup
LOADER: Freeing archive status for C:\mysql_backup.exe

推荐答案

我遇到了类似的问题,在部署可执行文件时出现完全相同的错误代码 14001,我用这组参数解决了它:

I had a similar problem, with exactly the same error code 14001 when I deployed my executable, and I solved it with this set of parameters:

pyinstaller --clean --win-private-assemblies -F <python files>

来自帮助说明:

--clean             Clean PyInstaller cache and remove temporary files
                    before building.

--win-private-assemblies
                    Any Shared Assemblies bundled into the application
                    will be changed into Private Assemblies. This means
                    the exact versions of these assemblies will always be
                    used, and any newer versions installed on user
                    machines at the system level will be ignored.

-F, --onefile       Create a one-file bundled executable.

这篇关于pyinstaller 和 onefile 构建导致错误加载 Python DLL(错误代码 14001)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆