How can I distribute python programs?
我的应用程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | main.py windows/ __init__.py mainwindow.py ... model/ __init__.py orders.py ... resources/ image1.png logo.jpg ... |
程序以main.py启动。有没有一种好的方法可以用它创建一个"最终"应用程序?我在想类似于py2exe/py2app的东西,但是不需要将python解释器/模块复制到只有一个可执行文件的应用程序中。
我看过distutils,但这看起来像是在python目录中安装了一个程序,这在非Linux平台上不常见。
目前,我只是将整个源文件夹复制到目标计算机上,并在Windows上创建一个
- 图标是默认的python图标。
- 我必须手动创建别名。
- 在我的源目录中有很多其他文件,比如源代码管理文件夹。
- 我必须手动将
main.py 重命名为main.pyw 。 - 如果目标机器上只有`.pyo*文件就好了。没有真正的理由,我只是不喜欢有不必要的文件。
- 对于Windows?(这是我目前唯一需要支撑的平台。)
- 对于Mac?
- 对于Linux?
- miniconda安装-自动下载miniconda并为应用程序创建独立的conda环境的PowerShell/bash脚本。支持PIP,但似乎没有维护,并且存在HTTPS下载问题。
- Continuum的Anaconda项目和(Conda)构造函数。两者都使用康达。(conda)构造函数似乎能够在Windows上创建独立的安装程序,甚至NSI安装程序,但不支持PIP。看起来像Python/小Python安装工。
- pyappshare-最终用户首先安装miniconda/anaconda(类似于运行时环境)。然后,单个install batch/bash脚本根据yaml规范创建独立的conda环境。该应用程序本身也是一个conda/pip包,安装到环境中,并创建一个可执行的入口点。自动创建跨平台桌面和程序快捷方式。它们激活环境并启动应用程序。支持PIP。
小精灵
如何创建一个良好的自动分发?
小精灵
我强烈推荐PyInstaller,它非常无缝地支持所有主要平台。与PY2Exe和PY2App一样,它在Windows上生成了标准的可执行文件,在OS X上生成了一个应用程序包,但是它的好处是,它还可以自动解决常见的依赖项,并且不需要额外的配置调整就可以包含这些依赖项。
还要注意,如果您要将python 2.6部署到Windows,那么应该将此补丁应用到pyinstaller主干。
您表示不需要安装程序,但Inno安装程序是Windows平台的一个易于使用和快速安装选项。
分发Python应用程序的正常方式是使用distuils。它既用于分发库类型的Python模块,也用于分发Python应用程序,尽管我不知道它如何在Windows上工作。在任何情况下,如果使用distutils,在Windows上都必须单独安装python。
我可能会建议您在Linux和Py2Exe或类似的Windows环境中使用双功能软件来分发它。对于OS X,我不知道。如果它是一个最终用户应用程序,你可能想要一个磁盘映像类型的东西,我不知道该怎么做。但是阅读本文了解更多关于它的用户体验的信息。对于为程序员开发的应用程序,您可能也可以在OS X上安装distutils类型。
FredrikLundh的
ps:每台机器都需要一个与squesh.py生成的字节码兼容的python解释器。如果需要,您可以为不同版本的Python生成不同的字节码版本(只需使用正确版本的Python运行squence.py)。
我可能错了,但是Ironpython没有内置的Windows编译器吗?
网址:http://www.ironpython.net
[编辑]
尝试一下cx-freeze,它是迄今为止我使用过的最好的.py-to.exe(加上一些.dlls)编译器。
http://cx-freeze.sourceforge.net网站/
我认为这也值得一提皮克斯(考虑到更多的关注这个问题,而不是问题本身)。根据其自身描述:
PEX files are self-contained executable Python virtual environments. More specifically, they are carefully constructed zip files with a
#!/usr/bin/env python and special__main__.py that allows you to interact with the PEX runtime. For more information about zip applications, see PEP 441.
号
当我阅读关于Python打包的概述时,我偶然发现了它。他们把这张漂亮的照片贴在那里:。
总结一下:如果您可以依赖于目标机器上安装的python,那么使用pex生成一个自包含的?可执行文件?例如,它的文件大小可能比pyinstaller生成的可执行文件小。
如果要在Windows上分发,请使用安装程序安装所有需要的相关文件/接口。分发setup.exe。这是上窗户最好的方法。否则用户会抱怨。
最方便的*跨平台分发python桌面应用程序的方法是依赖跨平台的Conda包管理器。有几种工具可以使用它:
小精灵
*对开发人员来说最方便。为最终用户提供了足够的便利。