如何保护Python源代码?
可以只分发Python脚本的字节码版本(.pyc文件),而不是原始的.py文件吗?我的应用程序嵌入了Python解释器,并使用PyImport_Import来加载脚本。我该如何告诉它去寻找.pyc文件并导入呢?
5 个回答
5
因为你是在用C++写主程序,所以你可以随意保护你的Python文件。比如,你可以先把它们加密,然后在需要用到的时候再解密,这样就可以导入到Python解释器里。
既然你在使用PyImport_Import,你可以自己写一个__import__
钩子,这样就可以从内存中导入模块,而不是从文件里导入。这样,你把.pyc文件的转换过程都可以在内存中完成,硬盘上根本不会留下任何可读的Python代码。
12
使用 freeze 工具,这个工具在Python的源代码中可以找到,路径是 Tools/freeze。它的作用是把Python的字节码转换成C语言的数组;然后你可以用C语言编译器把所有的模块嵌入到一个新程序中,这个新程序会和标准的Python模块链接在一起。
需要注意的是,使用freeze工具需要有一个C语言编译器。
其他相关工具:
1- PyInstaller
2- Py2Exe
3- Squeeze
4- cx_freeze
5
我通过创建一个 .py 的库和一个简单的 .py 程序来实现这个功能。然后,我把这个库编译成 .pyc 格式,并分发出去:程序以 .py 源代码的形式提供,而库则以编译后的 .pyc 格式提供。