2016-08-25 1 views
0

고양이 test.pyimportlib 모듈 가져 오기 모드 목록

from importlib import import_module 

bar = import_module('bar', package='project') 

LS 프로젝트/

__init__.py 
__init__.pyc 
bar.py 
bar.pyc 

파이썬 test.py

Traceback (most recent call last): 
    File "test.py", line 5, in <module> 
    bar = import_module('bar', package='project') 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named bar 

찾을 수 없습니다 ules (sys.modules)에 프로젝트 모듈이 표시되지 않습니다.

bar을 파이썬 셸을 사용하여 가져올 수 있습니다.

아이디어가 있으십니까?

그것은 표시 줄의 앞에 점을 필요로
+1

여기서'test /'는'project /'에 비례합니다. – karthikr

+0

같은 폴더에 있음 – kev

답변

1

.. :-(

bar = import_module('.bar', package='project') 
+0

또는'package' 인수를 건너 뛰고 단지'bar'를 반환하는'import_module ('project.bar')'로 호출하면됩니다 ('__import__' 특수 함수와는 달리 'project'와'project.bar'를 모두 import 한 후에'project'를 사용합니다). – ShadowRanger

0

import_lib에 대한 문서는 이름이 상대적 측면에서 지정

경우 그 다음 패키지 인수해야한다고 (예를 들어, import_module ('.. mod', 'pkg.subpkg')는 pkg.mod를 가져올 것입니다.)

패키지 이름을 결정하기위한 앵커 역할을 할 패키지에 지정해야합니다. 0

따라서 식은 다음과 같이 쓸 수 있습니다

bar = import_module('..bar',package='project.bar')