如何使用外部库分发 Python 程序

How to distribute a Python program with external libraries

我有一个 Python 程序,它使用以下库:Tkinter、NumPy、SciPy、SymPy 和 Matplotlib。在不久的将来,它可能会在开发过程中包含更多的库。

如何将这样的程序分发给 Mac、Windows 和 Linux 用户,而不需要用户安装每个库的正确版本,并且希望只下载一个文件并执行它?

一开始我想的是把程序编译成静态的二进制程序,但似乎不是一个容易的目标。

也许我可以要求用户安装 Python,但这是我可以要求他们的最大要求,我想尽可能避免它。

我根本不关心隐藏代码;最后我会分发代码和程序。我想要的是让程序非常容易让任何用户下载和运行它。

甚至 'a Python program is not suitable for such a distribution' 这样的建议也是受欢迎的。我在分发 C 程序方面有相当多的经验,但我不知道 Python 程序会带来什么。

您可以使用 Setuptools 进行打包。 它创建 eggs,相当于 jars。

https://pypi.python.org/pypi/setuptools#using-setuptools-and-easyinstall

https://pythonhosted.org/setuptools/setuptools.html

为了方便,你可以试试pyinstaller。 它会根据需要将所有需要的模块打包到一个文件夹或一个可执行文件中。它可以在所有平台上 运行。

创建目录的简单命令包含一个可执行文件和所有需要的库是

$pyinstaller --onedir --name=directory_name --distpath="path_to_put_that_directory" "path to your main_program.py"

您可以将 --onedir 更改为 --onefile,使该文件夹成为一个可执行文件,其中包含 运行 所需的所有内容。

您可以看看 Py2exe,即使您冒着应用程序变得比现在更大的风险,并且一些软件包需要手动安装。