隐藏Python代码以防止非程序员查看
我该如何让我的Python代码不被客户随意修改,以防他随便改动源代码呢?
我知道没有什么有效的方法可以完全隐藏Python代码,让人无法阅读。我只是想要一种简单的保护措施,让那些不太懂行的人不能轻易地用文本编辑器打开源文件,随便改动或者轻松理解代码的内容。因为我的代码写得很清晰,我希望能隐藏我最初使用的一些主要原则。
如果有人真的想要理解我做了什么,他是一定能做到的,我知道这一点。
那么,有没有什么常用的方法可以为Python代码提供简单的保护呢?
5 个回答
0
你可以做的事情
生成字节码有两种方法
- 命令行
- 使用 Python 程序
如果你使用命令行,可以用python -m compileall <参数>
来把 Python 代码编译成 Python 的二进制代码。
例如:python -m compileall -x ./*
或者,你可以用这段代码把你的库编译成字节码。
import compileall
import os
lib_path = "your_lib_path"
build_path = "your-dest_path"
compileall.compile_dir(lib_path, force=True, legacy=True)
def compile(cu_path):
for file in os.listdir(cu_path):
if os.path.isdir(os.path.join(cu_path, file)):
compile(os.path.join(cu_path, file))
elif file.endswith(".pyc"):
dest = os.path.join(build_path, cu_path ,file)
os.makedirs(os.path.dirname(dest), exist_ok=True)
os.rename(os.path.join(cu_path, file), dest)
compile(lib_path)
1
在被接受的回答中提到的同一个帖子里,有人建议你使用 compileall
这个工具,这样会更好:
python -m compileall ./
1
你可以试着用像 pyinstaller 或 py2exe 这样的工具把它们转换成可执行文件,不过这样会让文件的大小变大。
1
你可以把所有的 Python 文件放到一个压缩包里,然后在你的应用程序启动之前或者启动时,把这个压缩包放到 Python 的路径上。如果你把压缩包命名成其他格式,而不是 .zip,这样就能防止那些不太懂技术的人找到源代码。
要启动你的应用程序,确保你的主模块是解压状态,并且在导入任何压缩包里的源代码之前,让它自己更新 Python 的路径。
在你的主模块中:
__import__('sys').path.append('./source.dat')
import mymodule
...
if __name__ == '__main__':
....
你还需要把 .pyo 和 .pyc 文件也放进压缩包里,不然导入的时候会很慢。想了解更多细节,可以查看 https://docs.python.org/2/library/zipimport.html。
7