如何部署Python桌面应用程序?

时间:2008-10-02 19:31:51

标签: python deployment

我已经开始在桌面上运行个人python应用程序了。我使用wxPython作为GUI工具包。如果需要这种类型的应用程序,我可能希望将其商业化。

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

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

感谢。

5 个答案:

答案 0 :(得分:13)

您可以分发已编译的Python字节码(.pyc文件)而不是源代码。你无法阻止Python(或其他任何语言)的反编译。您可以使用像pyobfuscate之类的混淆器来让竞争对手破解您的反编译源更加烦人。

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

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

答案 1 :(得分:2)

哇,那里有很多问题:

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

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

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

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

希望这很有用。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

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

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

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

答案 4 :(得分:0)

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