Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分发.pyc文件有哪些限制?_Python_Pyc - Fatal编程技术网

Python 分发.pyc文件有哪些限制?

Python 分发.pyc文件有哪些限制?,python,pyc,Python,Pyc,我已经开始用Python开发一个商业应用程序,我正在考虑如何分发该应用程序 除了显而易见的(使用适当的商业许可证分发源代码)之外,我正在考虑只分发.pyc文件,而不分发相应的.py源代码。但我对Python的兼容性保证还不够熟悉,不知道这是否可行,更不用说这是否是个好主意了 .pyc文件是否独立于底层操作系统?例如,在64位Linux机器上生成的.pyc文件能否在32位Windows机器上工作 我找到了.pyc文件,但是主要版本和次要版本呢?例如,使用Python3.1.5生成的文件是否与Pyt

我已经开始用Python开发一个商业应用程序,我正在考虑如何分发该应用程序

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

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

我找到了
.pyc
文件,但是主要版本和次要版本呢?例如,使用Python3.1.5生成的文件是否与Python3.2.x兼容?或者用Python2.7.3生成的
.pyc
文件是否与Python3.x版本兼容

编辑:

首先,我可能不得不安抚那些不愿意发布消息来源的利益相关者。在没有源代码的情况下分发
.pyc
,可能会给他们带来一定程度的舒适感,因为这需要额外的反编译步骤才能获得源代码,即使这一步骤有些琐碎。只是一个足以让诚实的人保持诚实的障碍

例如,使用Python3.1.5生成的文件是否与Python3.2.x兼容

没有

或者,使用Python2.7.3生成的.pyc文件是否与Python3.x版本兼容

绝对不是

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


Python字节码是高级的,可以进行简单的反编译。

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


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

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

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


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

让我好奇的是,是否有(推荐的,或任何)以某种方式混淆Python代码并分发它的方法?有时世界迫使我们做一些愚蠢的事情。谢谢你的回答!我所知道的隐藏python代码的最好(唯一?)方法是在服务器上运行它,服务器上有客户端连接的API。这样他们就不会“看到”代码。