使用 Pyinstaller 制作的 Python Exe 试图从错误的位置找到 dll

Posted

技术标签:

【中文标题】使用 Pyinstaller 制作的 Python Exe 试图从错误的位置找到 dll【英文标题】:Python Exe made with Pyinstaller is trying to find dll from wrong location 【发布时间】:2014-09-28 17:38:30 【问题描述】:

我有一个在 32 位计算机上使用 pyinstaller 制作的 onefile 可执行文件。我确保在我的规范文件的二进制部分中包含必要的 dll 文件。我使用存档查看器验证了这些文件是否包含在内。

但是,当我尝试在已安装 Python 的 64 位计算机上运行 exe 文件时,它会尝试在 Python27/Scripts 文件夹中找到与其他 32 位 dll 不兼容的 dll 文件包含在exe文件中。

如何在我的 exe 文件中包含 32 位 dll 并让 64 位计算机在 exe 运行时访问它?

【问题讨论】:

【参考方案1】:

这段代码似乎对加载 DLL 时搜索的路径设置了相当高的优先级。您可以将它放在程序入口点的开头。

try:
    import win32api
    win32api.SetDllDirectory(sys._MEIPASS)
except:
    pass 

【讨论】:

以上是关于使用 Pyinstaller 制作的 Python Exe 试图从错误的位置找到 dll的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller的用法,用python制作简单的exe小程序,详细的不能再详细了

python制作一键启动脚本

使用 PyInstaller 制作的程序现在被 AVG 视为特洛伊木马

PyInstaller在制作二进制文件时找不到libpython2.7.so?

找不到 PyInstaller 库

在 python 脚本上使用 pyinstaller 会产生巨大的文件大小