将带有依赖项的python3脚本打包到exe中的最简单方法?

时间:2019-12-10 16:38:50

标签: python-3.x linux windows cross-platform

我尝试用Google搜索它,但是没有找到我需要的确切东西,我被卡住了。 我已经在Linux上编写了Python3.7脚本(使用了一些外部库)。这只是一个模块+依赖关系。 我需要将其打包,最好打包到一个.exe文件中,然后将其发送给Windows用户。该文件将在Windows系统上使用。用户将不会安装Python,也不能期望他们做很多设置工作。 打包代码(最好使用交叉编译,这样我就不需要使用Windows)并最小化Windows用户必须进行的设置的量是最简单的方法?

2 个答案:

答案 0 :(得分:2)

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

但是,在大多数情况下,这并不像他所说的那么简单。
例如,如果您的脚本中使用了外部文件,则需要进行更多工作才能使编译工作。以相同的方式,某些第三方模块(例如PyQt5或sounddevice)需要更多的工作。

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

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

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

  • 使用PyInstaller创建规格文件
  • 填写规格文件
  • 尝试编译。
    如果可行,请创建脚本以自动执行编译。完成了。

如果不是:

  • 检查是否有问题(丢失dll,文件放置在错误的位置)
  • 在自动化脚本中修复它。

但是

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

答案 1 :(得分:0)

例如,您有一个名为index.py的文件,它是一个计算器程序。您的问题是如何将其转换为.exe文件。

  1. 转到cmd并键入命令:pip install pyinstaller
  2. index.py位于“ C:\”中,因此键入命令:cd "C:\"
  3. 命令:pyinstaller index.py

您可以在其中找到名为dist的文件夹。在该文件夹中,您可以找到一个名为index的文件夹。这样便有了您的程序.exe文件。

祝你好运!