无法加载存在的python扩展模块

时间:2012-06-29 06:49:35

标签: python python-import python-extensions

我正在尝试使用thanos,它会在运行时创建扩展模块。 Thanos经常失败,因为它无法导入它在运行时创建的扩展名。

我很困惑为何会出现这种情况。

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

import cutils_ext有效,但我mport 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,但如果我可以在运行时启用详细信息,那将有所帮助(还没弄清楚如何做到这一点)。

1 个答案:

答案 0 :(得分: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的变量。 ..)