【问题标题】:How do I deploy a Python desktop application?如何部署 Python 桌面应用程序?
【发布时间】:2010-09-14 21:58:27
【问题描述】:

我已经开始使用在桌面上运行的个人 python 应用程序。我使用 wxPython 作为 GUI 工具包。如果有这类应用的需求,我可能会想把它商业化。

我不知道如何部署“真实”的 Python 应用程序,尽管我过去曾使用过 py2exe 并取得了不同程度的成功。我将如何混淆代码?我能以某种方式只部署字节码吗?

理想的解决方案不会危及我的知识产权(源代码),不需要直接安装 Python(尽管我确信它需要有一些嵌入式解释器),并且是跨平台的(Windows、 Mac 和 Linux)。有谁知道这方面的任何工具或资源?

谢谢。

【问题讨论】:

标签: python deployment


【解决方案1】:

哇,里面有很多问题:

  • 可以直接从 Python 解释器运行字节码 (.pyc) 文件,但我还没有看到任何可用的字节码混淆工具。

  • 我不知道有任何“一体化”部署解决方案,但是:

    • 对于 Windows,您可以使用 NSIS(http://nsis.sourceforge.net/Main_Page)。这里的问题是,虽然 OSX/*nix 带有 python,但 Windows 没有。如果您不愿意使用 py2exe 构建二进制文件,我不确定 Python 运行时环境的分发会涉及哪些许可问题(更不用说技术问题了)。

    • 您可以使用“捆绑”格式打包 OS X 发行版,*NIX 有自己的软件安装约定——通常是“make install”脚本。

希望对您有所帮助。

【讨论】:

  • Python 的字节码是非常高级的并且可以简单地反编译;分发 .pyc 文件确实不是您想要依赖的任何形式的保护。
【解决方案2】:

您可以分发编译后的 Python 字节码(.pyc 文件)而不是源代码。您无法阻止在 Python(或任何其他语言,真的)中进行反编译。您可以使用pyobfuscate 之类的混淆器,让竞争对手更讨厌破译您的反编译源代码。

正如 Alex Martelli 所说的 in this thread,如果您想对您的代码保密,您不应该在其他人的机器上运行它。

IIRC,我上次使用cx_Freeze 时,它为 Windows 创建了一个 DLL,从而消除了安装本机 Python 的必要性。这至少值得一试。

【讨论】:

    【解决方案3】:

    也许 IronPython 可以为您提供一些东西?我敢打赌那些 .exe/.dll 文件可以被锁定。不确定这些功能在单声道上如何工作,因此不知道这在 Linux/OS X 上如何工作......

    【讨论】:

      【解决方案4】:

      我一直在 Windows 上成功使用 py2exe。代码需要稍作修改,以便代码分析获取所需的所有模块,但除此之外,它还可以工作。

      对于 Linux,有几种重要的分发格式:

      • DEB(Debian、Ubuntu 和其他衍生产品)
      • RPM(RedHat、Fedora、openSuSE)

      制作 DEB 并不是特别困难,尤其是当您已经在使用 distutils/setuptools 时。在the policy document 中给出了一些提示,在repository 中可以找到打包 Python 应用程序的示例。

      我没有任何使用 RPM 的经验,但我确信有足够的例子可以找到。

      【讨论】:

        【解决方案5】:

        尝试使用 scraZ 混淆器 (http://scraZ.me)。 这是字节码的混淆器,而不是源代码。 免费版有很好的,但不是完美的混淆方法。 PRO版本对字节码有非常非常强大的保护。 (字节码混淆后无法反编译)

        【讨论】:

          猜你喜欢
          • 2023-03-11
          • 2018-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多