背景
因需要将.py文件编译成.pyd文件然后打包发布给用户,所以要用到Cython软件包
步骤
1. 安装Cython
pip install -i https://pypi.douban.com/simple/ Cython
2.编辑测试文件
a).新建某一目录,然后编辑一个test.py文件:
def hello():
print("Hello world!")
b).在与a)的同一目录下,然后编辑一个setup.py文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = 'Hello world app',
ext_modules = cythonize("test.py"),
)
c).在命令行输入一下命令
python setup.py build_ext --inplace
3.解决坑
a).如果能够成功编译出.pyd文件那么就恭喜你,但是大多数人会出现以下错误:
Unable to find vcvarsall.bat
这是缺乏pyhon到c++的编译器导致的,所以还需要安装一个C++编译器, 我这里使用的是 Microsoft Visual C++ Build Tools 2015 (14.0) 版本,百度云盘链接Microsoft Visual C++ Build Tools 14.0,提取码: 0fx5;以及Python3.5.2下载链接。
我使用的版本是Python3.5 + Microsoft Visual C++ Build Tools 14.0 + Cython-0.29.17, 亲测,python3.6.8也可。
安装完毕后记得还要进行修改(modify), 勾选如下信息,然后一路安装到底。
b).如果完成上述安装后如果你能用测试文件生成.pyd那么照样恭喜你,但是一般情况下还会出现以下问题
error: command 'cl.exe' failed: No such file or directory
这个时候的解决办法就要用到刚才安装的Microsoft Visual C++ Build Tools 14.0了。打开命令行,选择 Visual C++ Build Tools -> Visual C++ 2015 x86 x64 Cross Build Tools Command Prompt,并且打开,切换到测试文件所在的目录下,然后进行测试。如果还不行卸载掉Cython, 在Visual C++ 2015 x86 x64 Cross Build Tools Command Prompt命令行中重新安装一下。
转换为.pyd文件
将所有的.py文件重命名为.pyx文件,再使用easycython即可完成转换
easycython *.pyx
结果
编译完成的解雇如下:
最后生成的.pyd文件
最后祝所有小伙伴都能够安装成功!!!