我正在尝试使用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,但如果我可以在运行时启用详细信息,那将有所帮助(还没弄清楚如何做到这一点)。
答案 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的变量。 ..)