1

我正在尝试使用 thanos,它在运行时创建一个扩展模块。Thanos 不断失败,因为它无法导入它在运行时创建的扩展。

我很困惑为什么会这样。

在运行时(编译后)“cutils_ext”目录包含cutils_ext.so

import cutils_ext有效,但import cutils_ext.cutils_ext失败了

ImportError: No module named cutils_ext

我已经直接用imp进行了测试。说 cutils 是导入的 cutils_ext 包。当我做:

imp.find_module('cutils_ext', cutils.__path__)

我再次得到:

ImportError: No module named cutils_ext

我完全感到困惑。有没有办法调试这个?由于无法启动 python 解释器(使用 picloud),我无法在详细模式下运行 python,但是如果我可以在运行时启用详细,那将有所帮助(还没有弄清楚如何做到这一点)。

4

1 回答 1

2

你能试试:

import cutils_ext
import cutils_ext.cutils_ext

我不知道为什么,但有时我还必须导入一个模块才能导入其中的子模块。

或者也许,只是也许,第二个 cutils_ext 在第一个 cutils_ext 中根本不存在?

编辑:等一下..您能否发布您的文件夹结构以及 PYTHONPATH 包含的内容?

我猜你有类似的东西:

upper_folder (a folder)
    cutils_ext (folder)
        __init__.py (file)
        cutils_ext.so (obviously file)

如果您的 PYTHONPATH 指向upper_folder,那么您应该能够执行您发布的操作请注意,如果您遇到这种情况,__ init __.py必须在那里。

但是,如果您的 PYTHONPATH 直接指向 cutils_ext 文件夹,那么我认为您只能导入文件,因此 cutils_ext.cutils_ext 对解释器没有意义(除非您在 cutil_ext.so 中有一个名为 cutils_ext 的变量......)

于 2012-06-29T10:12:34.503 回答