【发布时间】:2017-04-17 19:39:17
【问题描述】:
假设我有一个目录“pylib”,里面有这个:
pylab/funcs.py:
def add(a, b):
return a + b
pylab/__init__.py:
from .funcs import add
然后可以执行以下操作:
$ python -c "import pylib as lib; print(lib.add(5, 6))"
11
如何用类似组织结构的 Cython 达到同样的效果?也就是说,如果我只有一个文件,比如:
cylab.pyx:
def add(a, b):
return a + b
我可以创建一个安装脚本
setup.py:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
extensions = [ # I will eventually be referencing C libraries
Extension('cylib', ['cylib.pyx'], libraries=[], library_dirs=[])
]
setup(
ext_modules = cythonize(extensions)
)
然后其余的以相当简单的方式工作
$ ./setup.py build_ext --inplace
[omitted]
$ python -c "import cylib as lib; print(lib.add(5, 6))"
11
但我不清楚我应该如何将其分解为单独的文件,也不清楚我应该如何修改安装脚本。
【问题讨论】: