4

この回答によると、次のような相対インポートimportlibを使用できます。import_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

編集

「機能しない」とは、モジュールをインポートしないことを意味します。

私はPython 3.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
4

1 に答える 1

3

相対インポートを試みる前に、親モジュールをインポートする必要があります。

import sklearn.feature_extraction機能させたい場合は、 import_module への呼び出しの前に追加する必要があります。

ここでの素敵な説明: https://stackoverflow.com/a/28154841/1951430

于 2016-07-11T16:10:47.137 に答える