Python importlib import_module Relative Import of Module
根据这个答案,您可以使用
1 | importlib.import_module('.c', 'a.b') |
为什么sklearn.feature_extraction.text的相对导入不起作用?
1 | importlib.import_module('.text', 'sklearn.feature_extraction') |
号
我验证了
1 2 3 | from types import ModuleType import sklearn.feature_extraction.text isinstance(sklearn.feature_extraction.text, ModuleType) |
退换商品
1 | True |
。
编辑
"不起作用",我的意思是它不导入模块。
我使用的是python 3.4
绝对方式工作:
1 2 3 | import importlib text = importlib.import_module('sklearn.feature_extraction.text') tfidf = text.TfidfVectorizer() |
相对方式不:
1 2 3 4 5 6 7 8 9 10 | import importlib text = importlib.import_module('.text', 'sklearn.feature_extraction') Traceback (most recent call last): File"<pyshell#28>", line 1, in <module> text = importlib.import_module('.text', 'sklearn.feature_extraction') File"C:\Python34\lib\importlib\__init__.py", line 109, in import_module return _bootstrap._gcd_import(name[level:], package, level) File"<frozen importlib._bootstrap>", line 2249, in _gcd_import File"<frozen importlib._bootstrap>", line 2199, in _sanity_check SystemError: Parent module 'sklearn.feature_extraction' not loaded, cannot perform relative import |
。
在尝试相对导入之前,需要导入父模块。
如果您希望导入模块工作,您必须在调用import模块之前添加
这里的解释很好:https://stackoverflow.com/a/28154841/1951430