Geo*_*lly 94 python distribution
我的应用程序如下所示:
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平台上并不常见.
目前我只是将整个源文件夹复制到目标计算机上并main.pyw在Windows上创建别名.一些不便之处:
main.py,以main.pyw手动.如何创建一个很好的自动化发行版?
Dan*_*aab 60
我强烈推荐Pyinstaller,它可以无缝地支持所有主要平台.与py2exe和py2app一样,它在Windows上生成标准可执行文件,在OS X上生成应用程序包,但其优点还在于自动解决常见依赖关系,并且无需额外配置调整即可完成.
另请注意,如果要将Python 2.6部署到Windows,则应将此修补程序应用于Pyinstaller trunk.
您表示您不需要安装程序,但Inno Setup是Windows平台易于使用且快速设置的选择.
Len*_*bro 34
分发Python应用程序的常规方法是使用distutils.它既用于分发库类型python模块,也用于python应用程序,虽然我不知道它在Windows上是如何工作的.如果使用distutils,在Windows上你必须单独安装Python.
我可能建议您使用disutils for Linux,Py2exe或类似的Windows进行分发.对于OS XI不知道.如果它是最终用户应用程序,您可能想要一个磁盘映像类型的东西,我不知道该怎么做.但请阅读这篇文章,了解有关用户体验的更多信息.对于为程序员制作的应用程序,您可能也可以在OS X上安装distutils类型.
我认为PEX也值得一提(更多地考虑这个问题受到的关注,而不是问题本身)。根据它自己的描述:
PEX 文件是独立的可执行 Python 虚拟环境。更具体地说,它们是精心构造的 zip 文件,带有一个
#!/usr/bin/env python特殊的特性__main__.py,允许您与 PEX 运行时进行交互。有关 zip 应用程序的更多信息,请参阅PEP 441。
当我阅读python 的包装概述时,我偶然发现了它。他们在那里张贴了这张漂亮的照片:

总结一下:如果你可以依赖安装在目标机器上的 python,使用 PEX 生成一个自包含的“可执行文件”,例如,它的文件大小可能比 PyInstaller 生成的可执行文件小。
Fredrik Lundh squeeze.py可以创建一个不包含Python解释器的文件,而是包含字节码.使用正确的参数,您可以在结果文件中包含其他文件,模块等.我在一个项目中成功使用它.生成的程序在OS X,Linux和Windows上运行没有任何问题!
PS:每台机器都需要一个Python解释器,它与squeeze.py生成的字节码兼容.如果需要,您可以为不同版本的Python生成不同的字节码版本(只需使用正确版本的Python运行squeeze.py).