python 没有导入调用的 ImportError
python ImportError without import call
好吧,我被这个难住了。我环顾四周,但找不到任何东西,也不知道如何调试它。基本上,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
这对我来说没有任何意义。它显然已经找到 ICgen_settings
因为它从内部抛出错误。此外,当它抛出错误时,我没有进行 import
调用!
有什么想法吗?
当您尝试 pickle.load
tmp_dict
时,需要加载传入数据流中任何对象的模块。
所以是的,当错误被抛出时,您实际上正在执行 import
调用:您正在解封需要 ICgen_settings
的某种类型的对象。注意:unpickling 代码可以 运行 任意 Python 语句。永远不要解开你不信任的对象!
现在,至于为什么它是 "clearly found ICgen_settings
":不,只是在一个名为 ICgen_settings.py
的文件中并不意味着行 import ICgen_settings
会成功。导入是否成功取决于 sys.path
,它源自您的 PYTHONPATH
环境变量。它还取决于 ICgen_settings
的模块布局:通常,它将是一个包含 __init__.py
文件的 ICgen_settings
文件夹 (不是文件)。
好吧,我被这个难住了。我环顾四周,但找不到任何东西,也不知道如何调试它。基本上,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
这对我来说没有任何意义。它显然已经找到 ICgen_settings
因为它从内部抛出错误。此外,当它抛出错误时,我没有进行 import
调用!
有什么想法吗?
当您尝试 pickle.load
tmp_dict
时,需要加载传入数据流中任何对象的模块。
所以是的,当错误被抛出时,您实际上正在执行 import
调用:您正在解封需要 ICgen_settings
的某种类型的对象。注意:unpickling 代码可以 运行 任意 Python 语句。永远不要解开你不信任的对象!
现在,至于为什么它是 "clearly found ICgen_settings
":不,只是在一个名为 ICgen_settings.py
的文件中并不意味着行 import ICgen_settings
会成功。导入是否成功取决于 sys.path
,它源自您的 PYTHONPATH
环境变量。它还取决于 ICgen_settings
的模块布局:通常,它将是一个包含 __init__.py
文件的 ICgen_settings
文件夹 (不是文件)。