如何为你的Python程序创建一个安装程序?

27

我刚接触Python,但我正在考虑使用Python编写一个程序并将其提供给我的朋友们。 他们对计算机了解不多,所以如果让他们自己安装Python,他们就做不到。但是,我能不能制作一个安装程序,下载一些版本的Python,并且只包含运行我的文件所需的内容,然后创建一个exe文件,在其中运行.py文件的自己的Python解释器。我还进行了谷歌搜索,看到可以使用冻结应用程序来将代码制作成可分发的exe文件(我使用Python 3.2的cx_freeze),但并非所有朋友都有Windows计算机,我更愿意让我的程序在每个新版本中通过创建.py文件的补丁来自动更新,而不是完全重新安装。

我并不想要任何独立的可执行文件。只需要一个安装程序,其中捆绑了您正在使用的Python版本的精简版。并且有一个选项,可以在便携式Python解释器中运行Python文件的链接exe文件,仅适用于Windows和一个会执行相同操作的.sh文件,仅适用于Linux。


投票关闭即将来临,但在此之前,请查看此处:http://effbot.org/pyfaq/how-can-i-create-a-stand-alone-binary-from-a-python-script.htm。对于跨平台,请考虑使用“easy-install”。 - MrGomez
我建议使用cx_Freeze。它具有降低被检测为恶意软件的机会的主要优势。至少对我来说是这样。 - NameError
7个回答

8

Pyinstaller是一个不错的选择,可以将代码转换为一个Windows可执行文件。

您可以在管理员权限下的cmd.exe中安装它,并运行pip install pyinstallerpip install --pre pyinstaller

之后,您可以使用pyinstaller来运行它。(很抱歉我无法提供一个在系统恢复后写的自动化脚本。我会尽快使用pyqt5重新编写它)

语法

--onefile - 将程序及其文件放入exe文件中。

--onedir - 将程序放入目录(文件夹)中 (比--onefile更快,因为不需要解压文件)。

-c - 创建一个控制台应用程序。

-w - 创建一个没有控制台的应用程序。

-i "[.ico文件或带有图标的exe文件的路径,例如C:\Files\CODE\Icon.ico]" - 创建一个带有图标的应用程序。

您可以在这里阅读其余内容 (链接)

然后,您可以获取Inno Setup并创建一个离线安装程序。

如果您需要一个网络安装程序(它会下载一个文件并提取它),我目前正在编写一个,很乐意为您创建一个。


6

2
据我所知,py2exe不支持3.6,只支持3.4。 - Andreas Haferburg
1
支持Python 3.3及更高版本。它可以构建控制台可执行文件、Windows(GUI)可执行文件、Windows服务和DLL/EXE COM服务器。 - Bart De Boeck

5
关于安装程序(适用于Windows)。
我认为你需要的是InstallForge。这是一个可以用来构建自己的安装向导的工具。这个网站pythonguis是关于PyInstaller和InstallForge的教程。如果你对使用PyInstaller使你的Python应用程序可执行文件没有兴趣,你可以跳过PyInstaller部分,直接查看InstallForge教程。虽然很多人提到它,但我还是建议使用PyInstaller。
InstallForge有能力制作自己的安装向导,可以将你的Python文件或可执行文件安装在你想要的目录中,并创建一个快捷方式,让你的朋友运行应用程序。
如果您不需要下载Python解释器版本,而是将Py文件与Pyinstaller捆绑在一起,它将已经包含Python解释器版本,这样更容易在您的InstallForge中进行捆绑。另一个StackOverflow线程here解释了如何使用命令行安装Python,假设您已经安装了Python解释器。要以自动化方式从Web上下载Python,我无法找到相关信息,尽管我相信如果您足够有创意,这并非不可能。
在确定如何捆绑和安装程序之后,您可以使用pip中找到的PyUpdater Python模块编写系统以自动更新自己。

相当简单 - 这个教程非常有用。 - Shmack

2
使用Nuitka。Nuitka是Python编译器中的佼佼者。您可以从以下位置安装它:
pip -v install nuitka

你可以通过以下方式创建单个可执行文件(仅适用于Windows系统):
py -m nuitka --enable-plugin=tk-inter --show-scons --show-progress --onefile --remove-output --warn-implicit-exceptions --warn-unusual-code --windows-disable-console--windows-icon-from-ico=ICON_PATH --windows-uac-admin main.py

或者

py -m nuitka --enable-plugin=tk-inter --show-scons --show-progress --onefile --remove-output --warn-implicit-exceptions --warn-unusual-code --disable-console --linux-onefile-icon=ICON_PATH main.py

这对我非常有用,谢谢。 - Carlos Espinoza Garcia

1

您可以创建一个inno setup安装程序。
步骤:

  1. 使用以下命令构建pyinstaller可执行文件:
    pip install pyinstaller
    pyinstaller --onefile yourfile.py
  2. 使用innosetup创建安装程序。
    有关更多信息,请参阅Inno setup文档此博客

1
欢迎提供解决方案的链接,但请确保您的答案即使没有链接也是有用的:添加链接周围的上下文,以便您的同行用户了解它是什么以及为什么存在,然后引用你所链接页面中最相关的部分,以防目标页面无法访问。[仅仅包含链接的答案可能会被删除。] (/help/deleted-answers) - jmoerdyk

1

Python是一种解释性语言,而不是编译型语言。因此,您想要分发的任何独立程序都必须将整个解释器及其所使用的库捆绑在其中。这将导致单个程序的文件大小巨大。此外,这种庞大的安装程序不能用于运行其他Python程序。比这更复杂一点,但远比这更好的解决方案是只安装一次解释器,然后使用它来运行任何Python程序。

我知道你的问题的重点是创建一个独立可执行文件,所以我知道我没有回答你的问题。但是,无法创建可执行的独立文件是解释性语言的缺点之一。然而,这里有一个基本观点,那就是解释性语言的整个目标,即一个单一的解释器,具有运行任何Python代码所需的所有通用功能(现在可以愉快地缩短代码长度)。因此,你看,这并不是一个缺点,这是解释性语言的整个意图。您最终可能会找到一种方法来创建一个独立的Python可执行文件,可以在您朋友的计算机上运行,但这将违背解释性语言背后的整个框架和思想。


7
很抱歉,我不是在寻找那个,但还是谢谢你。 :D - Malcolm2608
一个选项是将您的项目特定文件与您想要的解释器一起捆绑在安装包中(例如使用http://nsis.sourceforge.net/Main_Page)。这样,您可以安装Python(或检查它是否已经存在)以及您的项目特定文件。 - Moe
这不是一个有用的答案,它没有提供解决方案。 - Markus Bawidamann
我有一个小的Python工具,我使用pyinstaller创建了一个exe文件,这个(正如你所说)“巨大”的单文件exe只有10兆字节,实际上非常小;-) 这甚至包括一些库,所以完全没有问题。 - Markus Bawidamann
那么,在Windows上创建一个可分发且一致的功能Python程序的正确流程是什么? - user7420124

0
你可以使用auto-py-to-exe Python包,它是一个易于使用的基于GUI的.py到.exe文件创建器。
步骤如下:
  1. pip install auto-py-to-exe
  2. 使用命令行打开:
    auto-py-to-exe
欲了解更多信息,请访问以下网站: [1]: https://pypi.org/project/auto-py-to-exe/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接