Python 源文件保护

为什么考虑对Python源文件进行保护

最工作做中涉及到许多对外交互的工作,需要对外展示Python代码,考虑到会存在信息泄露的问题,部门内部决定对代码进行加密,最终决定将Python代码转化为.dll文件,但是查阅资料发现Python不能转为.dll文件,但可以通过Python工具转为.pyd(windows平台) or .so(linux平台),所以最终我们将代码准成了pyd格式,也就是Python中的.dll文件。

准备工作

pip install easycython

Visual C++ build tools工具安装(参考此)

开始编译

import Cython.Build
import distutils.core


def py2c(file):
    cpy = Cython.Build.cythonize(file)  # 返回distutils.extension.Extension对象列表

    distutils.core.setup(
        name='pyd的编译',  # 包名称
        version="1.0",  # 包版本号
        ext_modules=cpy,  # 扩展模块
        author="feng",  # 作者
        author_email='[email protected]'  # 作者邮箱
    )


if __name__ == '__main__':
    file = "timetable_schedule_simulation_opt.py"  # 需要转的py文件的名字(有时候可以写文件的绝对路径)
    py2c(file)

运行

该代码运行需要在命令行中执行

python test.py build_ext --inplace

可能出现的错误

LINK : fatal error LNK1158: cannot run 'rc.exe'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit code 1158

如果出现在问题,保证安装好Microsoft Visual C++ 14.0的情况下,可以在电脑中找到rc.exe和rcdll.dll这两个文件,复制到下面路径中

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

而rc.exe/rcdll.dll的位置可以参考这两个位置

C:\Program Files (x86)\Windows Kits\8.1\bin\x86
C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86

至此,pyd文件就已经生成

调用pyd文件

import timetable_schedule_simulation_opt

timetable_schedule_simulation_opt.run()

完成整个流程的打通!

你可能感兴趣的:(python,python,开发语言)