python - Pyinstaller exe 无法在其他计算机上运行(使用其他 Windows 版本)

标签 python

我的平台是 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 已经存在并且一切正常。问题是您运行此程序的机器可能没有它。

要解决这个问题,有几种解决方案:

  1. 在目标机器上安装 python 3.9(但在这种情况下你不需要创建可执行文件)
  2. 在你的程序中包含 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/

相关文章:

python - 使用 AppEngine 的 StringProperty 上的 "BadValueError: Filtering on Text properties is not supported"

python - TTK 主题不起作用,只是老式的 tkinter

python - 用python平滑线条路径

python - 在 Python 2 和 3 中统一迭代字典的生成器

python - youtube api - 等待视频

python - 有没有办法在 for 循环中更改函数中使用的变量?

python - Grep 多层可迭代的字符串匹配(Python)

允许我为参数分配边界的 Python 曲线拟合库

python - Numpy 数组 : Extracting preferentially ordered values from array with Nans without padding?

python - 如何使用python计算图像中的对象?