gpt4 book ai didi

python - 如何使 Cython 可见我的 Python 模块?

转载 作者:行者123 更新时间:2023-12-01 05:13:15 26 4
gpt4 key购买 nike

我有典型的 Cython 代码 (.pyx),但它需要从 Python 模块访问变量:

helloworld.pyx:

from hellotest import label

def say_hello():
print('Hello world!' + label)

还有 hellotest.py

from helloworld import say_hello

label = 'some label'
say_hello()

当我尝试使用通常的 python setup.py build_ext --inplace 编译它时,出现错误:回溯(最近一次调用最后一次): 文件“hellotest.py”,第 1 行,位于 从 helloworld 导入 say_hello 文件“helloworld.pyx”,第 2 行,在 init helloworld (helloworld.c:967) 中 来自hellotest导入标签 文件“/home/dusan/projects/temp/hellotest.py”,第 1 行,位于 从 helloworld 导入 say_hello导入错误:无法导入名称 say_hello

但是,当我刚刚删除标签依赖项(helloworld.pyx 中的第一行和 print statemet 中的标签)时,代码编译并运行良好。

有人可以告诉我,如何从 pyx 代码中访问其他模块吗?谢谢!

最佳答案

问题是您尝试 import hellotest进入helloworld并导入helloworld进入hellotest 。这称为 circular import ,这意味着 dependency-graph ,其中nodesimport 的文件和 verticesimport陈述,所以,这个graph有一个圆圈,因此它永远不会是 forest 。这意味着您需要阅读hellotest能够阅读helloworld ,但您需要阅读 helloworld阅读hellotest 。如果您想象一些尝试分析依赖关系的东西,那么您很快就会意识到这个循环会创建一个无限循环。以后尽量不要与 import 语句形成圈子,这样您就可以避免此类问题。

关于python - 如何使 Cython 可见我的 Python 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745364/

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