所谓pyd文件,就是D语言(C/C++综合进化版本)编写的一种dll 文件,相比起容易被反编译的pyc文件,pyd文件目前还没有办法进行反编译,只能被反汇编,因此有很高的安全性,并且运行效率也比较高。
在windows会编译出pyd,linux会编译称.so
编译前准备
要想编译pyd,首先要通过pip安装Cython和setuptools库。
pip install cython
pip install setuptools
除了Cython和setuptools这两个python库以外,在windows上编译pyd,还需要安装Microsoft Visual C++ 14.0
pyd的编译
准备好编译环境后就可以进行编译了,首先创建一个用于编译的py脚本例如setup.py,内容如下
import os
import setuptools
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
extensions = []
if os.path.exists('./test.py'):
extensions.append(Extension('test', ['test.py']))
setup(ext_modules=cythonize(extensions, compiler_directives={'language_level': 3}), )
其中的test.py就是要编译的python脚本,而language_level参数为2代表python版本为2.X,如果要打包python3.X版本时,这个参数应该为3。
test.py文件内容
最后再用python运行这个setup.py并加上两个参数,即可开始编译pyd。
python setup.py build_ext --inplace
对于python2.X版本,编译好的pyd文件名称和py文件相同,例如test.py编译完后为test.pyd;而对于python3.X版本,编译好的pyd文件会带有后缀,例如test.py用64位windows系统上的python3.7编译后是test.cp37-win_amd64.pyd,这个pyd名称不要修改,python在import库时会自动识别。
引用使用
删掉test.py文件,然后引用
执行结果