我如何分配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编译器?
[编辑]
尝试一下Cx_Freeze,到目前为止我所用过的最好的.py到.exe(加上几个.dlls)编译器。
如果你在Windows上发布,使用安装程序来安装所有相关的文件/中间人所需要的。 分发一个setup.exe。 这是Windows上的最佳方式。 否则用户会抱怨。