如何分发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 ... 程序

我的应用程序如下所示:

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解释器/模块复制到只有一个可执行文件的应用程序中


我看过distutils,但这看起来像是它在Python目录中安装了一个程序,这在非linux平台上是不常见的

目前,我只需将整个源文件夹复制到目标计算机上,并在windows上创建一个名为
main.pyw
。一些不便之处:

  • 该图标是默认的python图标
  • 我必须手动创建别名
  • 在我的源代码目录中有许多附加文件,如源代码管理文件夹
  • 我必须手动将
    main.py
    重命名为
    main.pyw
  • 如果目标计算机上只有“.pyo*文件就好了。没有真正的原因,我只是不喜欢有不必要的文件
如何创建一个好的自动化分发

  • 窗户?(这是我目前唯一需要支持的平台。)
  • 给麦克
  • 对于linux

    • 分发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。有几种工具可以使用它:

      • -powershell/bash脚本,可自动下载Miniconda并为应用程序创建隔离的conda环境。支持pip,但似乎未维护,并且存在https下载问题
      • 通过连续体。两者都使用康达。(conda)构造函数似乎能够在Windows上创建自包含的安装程序,甚至NSIS安装程序,但不支持pip。似乎表现得像蟒蛇/迷你蟒蛇安装者
      • -最终用户首先安装Miniconda/Anaconda(类似于运行时环境)。然后,单安装批处理/bash脚本从yaml规范创建隔离的conda环境。应用程序本身也是一个安装到环境中的conda/pip包,并创建一个可执行入口点。自动创建跨平台桌面和程序快捷方式。它们激活环境并启动应用程序。支持pip

      *这对开发者来说是最方便的。对最终用户来说已经足够方便了。

      我认为这也值得一提(考虑到这个问题受到的关注越多,问题本身就越少)。根据其报告:

      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没有那么重要