我已经开始使用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
可能会给他们一定程度的安慰,因为它需要额外的反编译步骤以获取源,即使该步骤有些微不足道。这足以让诚实的人保持诚实。
答案 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代码的二进制可执行文件(但如果有人从文件中提取它们,则不会隐藏实际的详细信息)。