如何分发python程序?
我的应用程序如下所示: main.py windows/ __init__.py mainwindow.py ... model/ __init__.py orders.py ... resources/ image1.png logo.jpg ... main.py 窗户/ __初始值 mainwindow.py ... 模型/ __初始值 orders.py ... 资源/ 图像1.png logo.jpg ... 程序以main.py启动。有没有一种好方法可以用它创建“最终”应用程序?我考虑的是类似于py2exe/py2app的东西,但没有将python解释器/模块复制到只有一个可执行文件的应用程序中如何分发python程序?,python,Python,我的应用程序如下所示: main.py windows/ __init__.py mainwindow.py ... model/ __init__.py orders.py ... resources/ image1.png logo.jpg ... main.py 窗户/ __初始值 mainwindow.py ... 模型/ __初始值 orders.py ... 资源/ 图像1.png logo.jpg ... 程序
我看过distutils,但这看起来像是它在Python目录中安装了一个程序,这在非linux平台上是不常见的 目前,我只需将整个源文件夹复制到目标计算机上,并在windows上创建一个名为
main.pyw
。一些不便之处:
- 该图标是默认的python图标
- 我必须手动创建别名
- 在我的源代码目录中有许多附加文件,如源代码管理文件夹
- 我必须手动将
重命名为main.py
main.pyw
- 如果目标计算机上只有“.pyo*文件就好了。没有真正的原因,我只是不喜欢有不必要的文件
- 窗户?(这是我目前唯一需要支持的平台。)
- 给麦克
- 对于linux
- -powershell/bash脚本,可自动下载Miniconda并为应用程序创建隔离的conda环境。支持pip,但似乎未维护,并且存在https下载问题
- 通过连续体。两者都使用康达。(conda)构造函数似乎能够在Windows上创建自包含的安装程序,甚至NSIS安装程序,但不支持pip。似乎表现得像蟒蛇/迷你蟒蛇安装者
- -最终用户首先安装Miniconda/Anaconda(类似于运行时环境)。然后,单安装批处理/bash脚本从yaml规范创建隔离的conda环境。应用程序本身也是一个安装到环境中的conda/pip包,并创建一个可执行入口点。自动创建跨平台桌面和程序快捷方式。它们激活环境并启动应用程序。支持pip
- 分发Python应用程序的正常方式是使用。它既用于分发库类型的python模块,也用于分发python应用程序,尽管我不知道它在Windows上是如何工作的。在任何情况下,如果使用distutils,您都必须在Windows上单独安装Python
我可能会建议您在Linux上使用Distils,在Windows上使用Py2exe或类似的东西。对于OSX,我不知道。如果它是一个终端用户应用程序,你可能会想要一个磁盘映像类型的东西,我不知道怎么做。但是阅读更多关于it用户体验的信息。对于为程序员开发的应用程序,您可能也可以在OS X上安装distutils类型。如果您是在windows上发布的,请使用安装所有相关文件/interpeter所需。分发setup.exe文件。这是windows上的最佳方式。否则用户会抱怨。我强烈推荐,它可以无缝地支持所有主要平台。与py2exe和py2app一样,它在Windows上生成一个标准可执行文件,在OS X上生成一个应用程序包,但它的好处是,它还可以出色地自动解析常见的依赖项,并在不进行额外配置调整的情况下包含它们 还请注意,如果要将Python2.6部署到Windows,则应将其应用于Pyinstaller trunk 您表示不需要安装程序,但对于Windows平台来说,这是一个易于使用和快速安装的选择。Fredrik Lundh可以创建一个不包含Python解释器的文件,而包含字节码。使用正确的参数,可以在结果文件中包含其他文件、模块等。我在一个项目中成功地使用了它。生成的程序在OS X、Linux和Windows上运行,没有任何问题
PS:每台机器都需要一个Python解释器,该解释器与squeak.py生成的字节码兼容。如果需要,您可以为不同版本的Python生成不同的字节码版本(只需使用正确版本的Python运行squeak.py)。我可能弄错了,但是IronPython没有针对windows的内置编译器吗 [编辑] 试试Cx_Freeze,这是迄今为止我使用过的最好的.py to.exe(加上一些.dll)编译器
分发python桌面应用程序最方便的*跨平台方式是依赖跨平台conda package manager。有几种工具可以使用它:
*这对开发者来说是最方便的。对最终用户来说已经足够方便了。我认为这也值得一提(考虑到这个问题受到的关注越多,问题本身就越少)。根据其报告: PEX文件是自包含的可执行Python虚拟环境。更具体地说,它们是用
#精心构造的zip文件/usr/bin/env python
和特殊的\uuuuu main\uuuuu.py
,允许您与PEX运行时交互。有关zip应用程序的更多信息,请参阅
我读书时偶然发现了它。他们在那里贴了这张漂亮的照片:
总而言之:如果您可以依赖目标机器上安装的python,那么使用PEX生成一个自包含的»可执行文件«,它的文件大小可能比PyInstaller生成的可执行文件小,例如。对于Windows,我发现py2exe非常容易使用
pip install distutils
pip install py2exe
只需setup.py中的几行代码:
from distutils.core import setup
import py2exe
setup(console=['hello.py'])
Py2exe构建一个可执行文件并包含所有依赖项。在构建exe:之前,您可能需要手动添加C++运行时。
from glob import glob
data_files = [("Microsoft.VC90.CRT", glob(r'C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*'))]
setup(
data_files=data_files,
...
)
有一个很好的简单教程,大约3页长。Mac和linux没有那么重要