0%

cython使用入门

最近工作上遇到一个问题,某券商提供的文件单接口需要用其提供的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

https://stackoverflow.com/questions/29846087/microsoft-visual-c-14-0-is-required-unable-to-find-vcvarsall-bat

我的微信公众号:pyquant

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道