代码之家  ›  专栏  ›  技术社区  ›  Lothar

python ImportError,没有导入调用

  •  3
  • Lothar  · 技术社区  · 11 年前

    好吧,我在这件事上难住了。我四处找了找,但找不到任何东西,也不知道如何调试。基本上,python正在抛出 ImportError 在一行代码中,我没有导入任何内容。我有一个相当大的模块 ICgen 其中包含模块 ICgen_settings .

    Traceback (most recent call last):
    
    File "<ipython-input-5-105e3826f255>", line 1, in <module>
    IC = ICgen.load('IC.p')
    
    File "diskpy/ICgen/ICgen.py", line 339, in load
    ICobj.settings.load(input_dict['settings'])
    
    File "diskpy/ICgen/ICgen_settings.py", line 484, in load
    tmp_dict = pickle.load(open(settings_filename, 'rb'))
    
    ImportError: No module named ICgen_settings
    

    这对我来说毫无意义 IC发电机设置 因为它从内部抛出错误。此外,我没有做 import 当它抛出错误时调用!

    有什么想法吗?

    1 回复  |  直到 11 年前
        1
  •  2
  •   Borealid    11 年前

    当你尝试 pickle.load 这个 tmp_dict ,需要加载传入数据流中任何对象的模块。

    是的,你实际上在做 import 当抛出错误时调用:您正在取消拾取需要的某个类型的对象 ICgen_settings .NB:unpickle代码可以运行任意Python语句。永远不要拆开你不信任的东西!

    现在,关于为什么它被“清楚地发现” IC发电机设置 “:没有,只是在一个名为 ICgen_settings.py 并不意味着 import ICgen_settings 将成功。导入是否成功取决于 sys.path ,源于 PYTHONPATH 环境变量。它还取决于 IC发电机设置 :通常是 IC发电机设置 文件夹 (非文件)包含 __init__.py 文件