最近工作上遇到一个问题,某券商提供的文件单接口需要用其提供的c语言工具调用,由于我们的交易框架是python开发的,所以需要用到cython来调用c开发的工具包,学习了cython的官方入门教程顺便记录如下。
cython介绍
Cython是针对Python编程语言和扩展的Cython编程语言(基于Pyrex)的优化静态编译器。
它使为Python编写C扩展与Python本身一样容易。
编写样例代码
首先,创建一个后缀为pyx的文件cython_example.pyx,编写cython函数
def say_hello_to(name):
print("Hello %s!" % name)
然后编写相应的编译脚本文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(name='Hello world app',
ext_modules=cythonize("cython_example.pyx"))
编译代码
python setup.py build_ext --inplace
报如下错误:
running build_ext
building cython_example extension
error: Unable to find vcvarsall.bat
Which Microsoft Visual C++ compiler to use with a specific Python version ?
visual c++ | python |
---|---|
14.x | 3.5,3.6,3.7,3.8 |
10.0 | 3.3,3.4 |
9.0 | 2.6, 2.7, 3.0, 3.1, 3.2 |
我使用的是python3.6,所以下载 Visual C++ 2015 Build Tools(包含Visual C++ 14.0)
下载地址:
http://go.microsoft.com/fwlink/?LinkId=691126&fixForIE=.exe.
安装之后重新执行编译命令输出如下最后两行说明编译通过:
Generating code
Finished generating code
会在当前目录下生成build目录和cython_example.cp36-win32.pyd
接下来做个测试,编写一个test.py,内容如下
import cython_example
cython_example.say_hello_to('eryk')
执行命令后输出如下结果说明调用cython函数成功了
Hello eryk!
参考
http://docs.cython.org/en/latest/src/quickstart/build.html
https://wiki.python.org/moin/WindowsCompilers
我的微信公众号:pyquant