我如何分配python程序?

我的应用程序如下所示:

 main.py
视窗/
     __init__.py
     mainwindow.py
     ...
模型/
     __init__.py
     orders.py
     ...
资源/
     image1.png
     logo.jpg
     ...

该程序是从main.py开始的。 有没有一种很好的方法来创build一个“最终”的应用程序呢? 我正在考虑像py2exe / py2app,但没有复制python解释器/模块到只有一个可执行文件的应用程序。

我看了一下distutils,但是这看起来像是在Python目录中安装了一个程序,这在非Linux平台上并不常见。

目前我只是将整个源文件夹复制到目标机器上,并在Windows上为main.pyw创build一个别名。 一些不便:

  • 该图标是默认的python图标。
  • 我必须手动创build别名。
  • 在我的源代码目录中有很多额外的文件,如源代码pipe理文件夹。
  • 我必须手动将main.py重命名为main.pyw
  • 如果只有.pyo *文件在目标机器上,这将是很好的。 没有真正的理由,我只是不喜欢有不必要的文件。

如何创build一个很好的自动分配?

  • 为Windows? (这是我目前唯一需要支持的平台。)
  • 对于Mac?
  • 对于Linux?

分发Python应用程序的正常方式是使用distutils 。 这是为分发库types的Python模块和Python应用程序,虽然我不知道它是如何工作在Windows上。 无论如何,如果你使用distutils,你将在Windows上分别安装Python。

我可能会build议你分发Linux的disutils和Py2exe或类似的Windows。 对于OS X不知道。 如果它是一个最终用户应用程序,你可能会想要一个磁盘映像types的东西,我不知道该怎么做。 但阅读这篇文章的更多信息的用户体验。 对于为程序员所做的应用程序,您也可以在OS X上安装distutilstypes。

我强烈build议Pyinstaller ,它支持所有主stream平台非常无缝。 像py2exe和py2app一样,它在Windows上产生一个标准的可执行文件,在OS X上产生一个应用程序包,但是也有很好的自动解决公共依赖的function,并且不需要额外的configuration调整。

另外请注意,如果您将Python 2.6部署到Windows,则应该将此修补程序应用于Pyinstaller中继。

您表示不需要安装程序,但Inno Setup是一个易于使用且快速设置Windows平台的select。

Fredrik Lundh的squeeze.py可以创build一个不包含Python解释器的文件,而是包含字节码。 有了正确的参数,您可以在结果文件中包含其他文件,模块等。 我在一个项目中成功地使用了它。 由此产生的程序运行在OS X,Linux和Windows上没有任何问题!

PS :每台机器都需要一个Python解释器,它与squeeze.py生成的字节码兼容。 您可以为不同版本的Python生成不同的字节码版本(如果需要的话)(只需使用正确版本的Python运行squeeze.py)即可。

我可能会错,但不是IronPython有一个内置的Windows编译器?

http://www.ironpython.net

[编辑]

尝试一下Cx_Freeze,到目前为止我所用过的最好的.py到.exe(加上几个.dlls)编译器。

http://cx-freeze.sourceforge.net/

如果你在Windows上发布,使用安装程序来安装所有相关的文件/中间人所需要的。 分发一个setup.exe。 这是Windows上的最佳方式。 否则用户会抱怨。