gpt4 book ai didi

Python 包 Cython 模块

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:29 24 4
gpt4 key购买 nike

我有以下包结构:

+ repo/
+ setup.py
+ package/
+ module1/
+ submodule1.py
+ submodule2.pyx
+ module2/
+ submodule3.py

我想通过类似的方式使用 submodule1.py 中的 submodule2.pyx:

import submodule2

但我完全不知道该怎么做。我尝试将以下行添加到我的 setup.py 中:

from distutils.core import setup
from setuptools import setup
from Cython.Distutils import build_ext

ext_modules = cythonize(Extension(
"zindex",
sources=["ndmg/graph/zindex.pyx"],
language="c",
))
for e in ext_modules:
e.pyrex_directives = {"boundscheck": False}

setup(
name='ndmg',
ext_modules = ext_modules,
packages=[
'package',
'package.module1',
....
)

但是没有成功。我能找到的所有教程都有非常非常简化的示例,所以我不确定如何在我的 python 包中包含 Cython 模块,因为包的其余部分都只是普通的 python 代码。有没有人有任何我可以效仿的好例子,或者有人可以告诉我我做错了什么?

提前致谢!

最佳答案

给 cythonize 的名称是 Cython 将用来调用模块的名称以及必须导入的名称。

上面的 setup.py 将生成一个名为 zindex 的本地扩展,并且必须作为 import zindex 导入 即使在 zindex 包中的 python 文件中.

这是一个如何做到这一点的例子:

from distutils.core import setup
from setuptools import setup
from Cython.Distutils import build_ext

ext_modules = cythonize(Extension(
"ndmg.graph.zindex",
sources=["ndmg/graph/zindex.pyx"],
language="c",
))
<..>

构建并安装扩展。

然后您可以在 ndmg/graph/py_index.py 下的 python 文件中执行此操作。

from zindex import <..>

从 cython 模块导入。

关于Python 包 Cython 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45049979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com