首页 > 解决方案 > 将具有依赖关系的python3脚本打包到exe中的最简单方法?

问题描述

我试图用谷歌搜索它,但没有找到我需要的确切东西,我被卡住了。我在 Linux 上编写了一个 Python3.7 脚本(使用一些外部库)。这只是一个模块 + 依赖项。我需要将其打包,最好打包成一个 .exe 文件并将其发送给 Windows 用户。该文件将在 Windows 系统上使用。用户不会安装 Python,我也不能指望他们做很多设置工作。打包代码的最简单方法是什么(最好使用交叉编译,这样我就不需要使用 Windows)并最大限度地减少 Windows 用户必须执行的设置量?

标签: python-3.xlinuxwindowscross-platform

解决方案


基于 Artashes 的回答,PyInstaller 实际上是目前将 Python 脚本编译为 exe 的最佳工具。

但大多数时候,它并不像他所说的那么简单。
例如,如果您的脚本中使用了外部文件,则需要提供更多工作才能使编译工作。同样,一些第三方模块(例如 PyQt5 或 sounddevice)需要更多的工作。

我建议您仔细阅读 PyInstaller 文档,并确保阅读有关规范文件的部分。每当我将脚本编译为 exe 时,我首先使用 PyInstaller 创建一个规范文件。然后我填写规范文件以添加所有有问题的依赖项和外部文件。

在这一步你很少完成。大多数情况下,您的一个或多个导入需要手动添加或修改 dist 文件夹才能使事情正常工作(例如,对于 Qt,您需要将 Qt5Core.dll 移动到另一个文件夹)。

换句话说,一般步骤如下:

  • 使用 PyInstaller 创建一个规范文件
  • 填写规范文件
  • 尝试编译。
    如果可行,请创建一个脚本来自动编译。你完成了。

如果不:

  • 检查看看有什么不工作(缺少dll,文件在错误的地方)
  • 在自动化脚本中修复它。

然而

PyInstaller 适用于所有平台,但它只能针对它启动的平台进行编译。换句话说,在 Windows 上使用 PyInstaller 将创建一个 exe,而在 Linux 上执行它将创建一个二进制文件。不幸的是,我只知道一种解决方法:大多数人(包括我)求助于虚拟机来为特定平台进行编译。如果您使用的是 linux,请安装 Virtualbox,安装 Windows 操作系统并从 VM 运行 PyInstaller 以创建一个 exe。


推荐阅读