2016-07-11 7 views
1

this answer에 따르면, 당신과 같이 상대 가져 오기를 사용하여 import_module-importlib를 사용할 수 있습니다모듈의 파이썬 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 

을, 나는 그것이 아무튼 의미 "작동하지 않는다"으로

모듈을 가져 오지 마십시오. 내가 파이썬 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 
+0

당신이 "작동하지 않습니다"무엇을 의미합니까? – cdonts

답변

2

부모 모듈은 상대 가져 오기를 시도하기 전에 수입 될 필요가있다.

작동 시키려면 import_module 호출 전에 ìmport sklearn.feature_extraction을 추가해야합니다.

여기

니스 설명 : https://stackoverflow.com/a/28154841/1951430

+0

그러면'importlib.import_module()'의 목적과 목적은 무엇입니까? 어쨌든'sklearn.feature_extraction'을 가져와야한다면 왜 파일의 머리 부분에'sklearn.feature_extraction.text' 파일을 가져 오지 않을까요? 'importlib.import_module'을 언제 사용할 수 있을까요? – Jarad

+0

importlib는 import 문을 파이썬 코드로 제공합니다. – jobou

관련 문제