使用 Cython 加密 Python 项目
最近公司需要将 python 代码部署到端上查了各种加密方法说到底 python 其实是不建议加密部署的,像什么生成.pyc其实都是很容易反编译直接运行的,因为它是解释型语言。不像 C 或者 java 可以编译后生成机器码直接部署。还有看到把项目打包成.exe文件,在 windows 上运行,由于我们使用 Linux 平台没有尝试,最后选择了使用Cython这个库来加密(编译成二进制)。 Cython其实就是把py 代码编译成 C或者 C++代码来执行,在Linux 上会生成.so二进制文件,Windows下为.pyd,所以还有一个作用是加速代码的执行效率。但还有一些限制如项目中不能删除__init__.py否者包导入会失败。详细可参考官方文档,Cython 还在持续开发中支持 Python3,下面也用Python3演示。 先来做一些准备工作定义编译后的文件夹build和一些部署不需要的文件和文件夹,将待编译的.py文件加入ext_modules列表 cur_dir = os.path.abspath(os.path.dirname(__file__)) setup_file = os.path.split(__file__)[1] build_dir = os.path.join(cur_dir, 'build') build_tmp_dir = os.path.join(build_dir, "temp") # define exclude dirs, these dirs will be deleted exclude_dirs = ['.git', '__pycache__', 'test', 'logs', 'venv', 'tests'] # defile exclude files, these files will be deleted exclude_files = ['*.md', '.gitignore', '.python-version', 'requirements.txt', '*.pyc', '*.c'] # these `....