Python importlib导入模块Modu的相对导入

2024-05-16 23:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

根据this answer,您可以使用importlibimport_module使用类似这样的相对导入:

importlib.import_module('.c', 'a.b')

为什么相对导入不适用于sklearn.feature_extraction.text?

importlib.import_module('.text', 'sklearn.feature_extraction')

我验证了text是一个具有以下功能的模块:

from types import ModuleType
import sklearn.feature_extraction.text
isinstance(sklearn.feature_extraction.text, ModuleType)

回报

True

编辑

“不工作”,我的意思是它不导入模块。

我正在使用Python3.4

绝对方式:

import importlib
text = importlib.import_module('sklearn.feature_extraction.text')
tfidf = text.TfidfVectorizer()

相对方式不:

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

Tags: 模块textinimport方式lineimportlibsklearn