我的平台是 Windows 10 和 Python 3.9。还有另一台没有Python的计算机(Windows server 2008R2)。所以我想在我的电脑上使用 pyinstaller
,在另一台电脑上使用 .exe
。
我尝试了简单的脚本 print("hello")
并使用了 pyinstaller -F myscript.py
.exe
在我的电脑上运行,但在另一台电脑上失败。
错误
加载 python dll ~ python39.dll 时出错
我应该使用 Python 3.8 吗?或者我应该怎么做?
最佳答案
问题是 Pyinstaller 不会创建完全独立的可执行文件,它会创建依赖项(例如这个 python39.dll),所以这个 python39.dll 应该在运行这个可执行文件的计算机上。因为您的计算机上已经安装了 python,所以 python39.dll 已经存在并且一切正常。问题是您运行此程序的机器可能没有它。
要解决这个问题,有几种解决方案:
- 在目标机器上安装 python 3.9(但在这种情况下你不需要创建可执行文件)
- 在你的程序中包含 python39.dll
对于第二种解决方案,只需创建一个文件夹并将您的可执行文件以及这个 python39.dll 库移动到其中。 Windows 会找到它,因为它与该可执行文件位于同一目录中。您可以从 c:\Windows\System32 文件夹(或所有 DLL 存储在您的系统上的位置)获取此库,然后将其复制到包含您的可执行文件的文件夹中。之后,不仅发布可执行文件,还发布包含库的文件夹。
@Stepan 在评论中写道,您还可以通过在编译时向命令中添加 --add-binary "path\to\python39.dll" 将此库直接包含在可执行文件中。最终命令将如下所示:
pyinstaller -F --add-binary "c:\Windows\System32\python39.dll"myscript.py
关于python - Pyinstaller exe 无法在其他计算机上运行(使用其他 Windows 版本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65704901/