gpt4 book ai didi

python - 在 Cython 中使用和导入/导入嵌套包

转载 作者:行者123 更新时间:2023-12-03 17:11:46 25 4
gpt4 key购买 nike

是否可以在 Cython 扩展中使用嵌套包(又名子目录),如果可以,我应该怎么做?

似乎 Cython 不允许在顶级包之外进行相对导入/cimport。所以,假设我有以下 Cython 项目结构:

/lib_interface.pyx
/lib_interface.pxd // the top level source files
/submodule/__init__.pxd
/submodule/submodule_code.pyx
/submodule/submodule_code.pxd

假设我们生成的 Cython 库被称为 SomeLib,所以在 Python 中我希望这样做:
从 SomeLib.submodule 导入 SomeClass

但这导致错误说“SomeLib.submodule”不是一个包。

我尝试 cimporting 并将子模块导入 lib_interface.pxd,但这从来没有帮助。

最佳答案

如果你想将东西导入另一个 Cython 模块,你需要 __init__.pxd在每个目录。如果您还想将其导入 Python,请添加通常的 __init__.py在每个级别。所以你的目录结构看起来像:

/lib_interface.pyx
/lib_interface.pxd
/__init__.py
/submodule/__init__.pxd
/submodule/submodule_code.pyx
/submodule/submodule_code.pxd
/submodule/__init__.py
这在 __init__.py在子模块目录下:
from somelib.submodule.submodule_code import MyClass

__all__ = [MyClass]
现在您应该可以将其导入为 from somelib.submodule import MyClass .

关于python - 在 Cython 中使用和导入/导入嵌套包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62245550/

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