Noo*_*bot 6 python compilation cython
我正在尝试编译一个在install(.pyd)上预编译的模块的快速扩展.下面是我正在尝试做的一个简单的例子.鉴于foo.pyd:
from foo.bar cimport Bar
cdef class Baz(Bar):
pass
Run Code Online (Sandbox Code Playgroud)
cdef class Baz(Bar):
def __init__(self, *a, **k):
...
Run Code Online (Sandbox Code Playgroud)
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
extensions = [Extension('baz', ['baz.pyx',], libraries=['foo.pyd',])]
setup(name='baz', ext_modules=cythonize(extensions))
Run Code Online (Sandbox Code Playgroud)
我已尝试过上述的许多变化,但无济于事.
cimport用于 C/C++ API(函数、结构、类)并从.pxd文件中读取,这些文件是 C/C++ 头文件的 Cython 对应物。如果你没有.pxd对foo在编译时库,你不能cimport从它。Python 扩展模块(.pyd在 Windows 上,.so在 Linux 上)通常根本没有 C API:它们只包含外部可见的符号,允许 Python 模块导入器将它们的内容识别为 Python 模块。
此外,如果您想从模块中获取 Python 类(甚至是作为扩展类型实现的类),则需要使用import它。不过,我认为cdef class不允许从这样的类继承。
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |