最近由于项目需要,需将核心代码进行打包,查阅了一些资料后,决定编译为pyd(windows)或.so(Unix),这样做的优点是可带来性能的提升,另一方面也难以破解;缺点是兼容性稍差,对于不同版本的操作系统,可能需要重新编译。以下是编译pyd的过程记录
系统:windows 10
python:3.8.5
安装cython
pip install cython
安装Cython之后,需指定vcvarsall.bat的位置。这一步没有做,估计我电脑已经具备了。
创建工作目录并准备setup.py
创建工作目录,并将需编译的.py文件copy至该目录下;
在该目录,创建setup.py,基本内容参考如下
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = ‘Hello world app’,
ext_modules = cythonize(“test_filter.py”),
)
其中,test_filter.py是待编译的py文件
执行编译命令
打开cmd,cd至工作目录并执行如下命令:
python setup.py build_ext --inplace
最终生成pyd 文件,其中build和test_filter.c是生成过程中的临时文件,test_filter.pyd是所需要的文件,可以使用import引入模块的方式正常使用。