利用 cython 编译成 pyd 文件并且调用 - 保护源码
安装 cython
pip install cython
或者去官网下载安装
安装 C++ 编译器
(如果不安装 C++ 编译器,就进行 编译命令,会发生报错,比如 unable to find vcvarsall.bat)
minGW 不支持 3.5 所以 安装 VS(也比较省事,不需要为 python 添加配置文件之类的麻烦事)
具体所需要的 VS 版本 要查看 Lib\distutils\_msvccompiler.py 文件里面的代码片段进行判断
如:
if version >= 14 and version > best_version:
表示需要 VS14 及以上版本,也就是 VS 2015 及其以上版本. python3.5 就是需要 VS 2015 以上
(相对的如果是9就是9以上即可这时VS10什么都是可以的)
VS 2015 社区版 下载安装器 http://pan.baidu.com/s/1eSueWLG
安装时选择自定义安装,勾选上功能
Common Tools for Visual C++ 2015
Python Tools for Visual Studio(March 2016)
Microsoft Web Developer Tools 此项不是必要安装的,但是由于这是软件默认勾选的,所以也装了
创建 python 脚本,调用 cython 库进行编译
#setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(
#name = 'xxx',
ext_modules = cythonize("file.py")
)
使用命令行 进行编译
(应该也可以直接运行 setup.py 进行编译)
方式[1] python.exe setup.py build_ext --inplace 此命令会生成 pyd 文件在 当前 dos 指向目录下
方式[2] python setup.py build 此命令在当前dos 指向目录生成 .C 文件,还会生成 build 目录,并把 pyd 和 lib 文件 生成在该目录下
复制安装模块到 python 目录 Lib\site-packages ,此命令一般在 方式[2] 之后配合使用。不是必须执行的。辅助命令 python setup.py install
导入文件模块进行调用
import 模块名
生成的文件名字不能更改,或者只能把文件名字更改为与模块名一致,模块名就是 编译前的 py 文件模块名字
一旦随意修改,可能会导致 import 失败
No module named 'xxx'
或者
builtins.ImportError: dynamic module does not define module export function (PyInit_xxx)