【问题标题】:What are the limitations of distributing .pyc files?分发 .pyc 文件有什么限制?
【发布时间】:2012-07-06 19:10:56
【问题描述】:

我已经开始使用 Python 开发一个商业应用程序,并且正在权衡如何分发该应用程序的选择。

除了显而易见的(分发具有适当商业许可的源代码)之外,我正在考虑仅分发 .pyc 文件而不分发相应的 .py 源代码。但我对 Python 的兼容性保证还不够熟悉,不知道这是否可行,更不用说它是否是一个好主意。

.pyc 文件是否独立于底层操作系统?例如,在 64 位 Linux 机器上生成的 .pyc 文件可以在 32 位 Windows 机器上运行吗?

我发现.pyc 文件should be compatible across bugfix releases,但是主要和次要版本呢?例如,使用 Python 3.1.5 生成的文件是否与 Python 3.2.x 兼容?或者使用 Python 2.7.3 生成的 .pyc 文件是否与 Python 3.x 版本兼容?

编辑:

首先,我可能不得不安抚那些不愿分发资源的利益相关者。在没有源代码的情况下分发.pyc 可能会给他们一定程度的安慰,因为它需要额外的反编译步骤才能获取源代码,即使该步骤有些微不足道。足以让诚实的人保持诚实的障碍。

【问题讨论】:

    标签: python pyc


    【解决方案1】:

    例如,使用 Python 3.1.5 生成的文件是否与 Python 3.2.x 兼容?

    没有。

    或者使用 Python 2.7.3 生成的 .pyc 文件是否与 Python 3.x 版本兼容?

    没有。

    我正在考虑仅分发 .pyc 文件而不分发相应的 .py 源。

    Python 字节码是高级且易于反编译的。

    【讨论】:

    • 让我好奇,有没有(推荐的,或任何的)方法来以某种方式混淆 Python 代码并分发它?
    • 有时世界强迫我们做傻事。感谢您的回答!
    • 我所知道的最好的(唯一的?)隐藏你的 python 代码的方法是在一个服务器上运行它,它有一个客户端连接到的 API。这样他们就永远不会“看到”代码。
    【解决方案2】:

    您当然只能分发 .pyc 文件。正如 Cat 所提到的,不,它不会与 Python 的不同主要版本兼容。它可能会阻止某些人查看源代码,但 .pyc 文件很容易反编译。基本上,如果你能编译它,你就可以反编译它。

    您可以使用像 py2exe / py2app / freeze 这样的二进制打包程序。我从未尝试过它们,但如果他们愿意,仍然有人可以反编译它们。

    【讨论】:

      【解决方案3】:

      正如 Cat 所说,pyc 文件不是跨版本安全的。尽管您试图向用户隐藏的内容决定了您需要做什么。

      至于源代码,在分布式应用程序中隐藏 Python 源代码并没有什么好的方法。如果你只是想隐藏特定的细节,你可以将它们打包到一个 C 扩展中——这将更难反编译。

      因此,如果您担心代码的使用,请将许可证附加到代码中以供不使用,或者将您不想被盗的部分翻译成编译语言。如果您只是希望代码不是明显的 Python,您可以创建一个包装 Python 代码的二进制可执行文件(但如果有人从文件中提取它们,则不会隐藏实际细节)。

      【讨论】:

        猜你喜欢
        • 2011-04-24
        • 2013-07-02
        • 1970-01-01
        • 2018-08-23
        • 2011-03-01
        • 1970-01-01
        • 2022-01-17
        • 2015-10-31
        相关资源
        最近更新 更多