分发.pyc文件有什么限制?

时间:2012-07-06 19:10:57

标签: python pyc

我已经开始使用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可能会给他们一定程度的安慰,因为它需要额外的反编译步骤以获取源,即使该步骤有些微不足道。这足以让诚实的人保持诚实。

3 个答案:

答案 0 :(得分:16)

  

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

没有

  

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

双重否。

  

我正在考虑只分发.pyc文件,而不使用相应的.py源代码。

Python字节码是高级的,可以轻易地解压缩。

答案 1 :(得分:4)

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

您可以使用二进制打包程序,如py2exe / py2app / freeze。我从来没有尝试过它们但是如果有人想的话,有人仍然可以反编译它们。

答案 2 :(得分:1)

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

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

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