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

36

我已经开始制作一个运行在桌面上的个人 Python 应用程序,使用 wxPython 作为 GUI 工具包。如果有需求,我可能会考虑商业化。

我没有部署“真实”Python应用程序的知识,尽管我以前曾经使用过 py2exe,但效果不一。我该如何混淆代码?我能否只部署字节码?

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

谢谢。


3
你如何保护Python代码?嗯...可以通过以下几种方式:使用编译器将Python代码转换为字节码,使用加密软件来保护源代码,或者在运行代码时使用密码访问控制。详情请参考此文:https://dev59.com/AnVC5IYBdhLWcg3wihuv#261817 - Bite code
5个回答

15

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

正如Alex Martelli在这个帖子中所说,如果要保守您的代码机密,您不应该在其他人的计算机上运行代码。

我记得上次使用cx_Freeze时,它创建了一个DLL文件用于Windows,从而消除了对本地Python安装的需要。这至少值得一试。


3
也许IronPython可以为您提供一些帮助?我敢打赌那些.exe/.dll文件可能会被锁定得很严格。不确定这些功能在mono上如何工作,因此不知道在Linux/OS X上如何运行...

2

哇,这里有很多问题:

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

  • 我不知道是否有“一站式”部署解决方案,但是:

    • 对于Windows,您可以使用NSIS (http://nsis.sourceforge.net/Main_Page)。问题在于,尽管OSX / * nix带有python,但Windows则没有。如果您不想使用py2exe构建二进制文件,我不确定分发Python运行时环境(更不用说技术问题了)周围的许可问题会是什么。

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

希望这对您有所帮助。


2
Python的字节码非常高级且容易反编译;分发.pyc文件真的不是你想依赖的任何形式的保护措施。 - Thomas Wouters

0

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


0

我一直在Windows上成功地使用py2exe。代码需要进行一些修改,以便代码分析可以捕获所有所需的模块,但除此之外,它可以正常工作。

至于Linux,有几种重要的发行格式:

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

制作DEB并不特别困难,尤其是当您已经在使用distutils/setuptools时。策略文件中提供了一些提示,可以在存储库中找到打包Python应用程序的示例。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接