2016-08-25 3 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) не показывает никакого модуля проект.

Я могу импортировать бар используя оболочку python.

Любые идеи?

+1

где 'test.py' относительно' project/'? – karthikr

+0

он находится в той же папке – kev

ответ

1

Она нуждается в точку перед баром .. :-(

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

Или пропустите передачу аргумента 'package' и просто назовите его как' import_module ('project.bar') ', который все равно возвращает' bar' (в отличие от специальной функции '__import__', которая вернется 'project' после импорта как' project', так и 'project.bar'). – ShadowRanger

0

Документация import_lib говорит, что

Если имя указано в относительном выражении, то пакет аргумент должен (например, import_module ('.. mod', 'pkg.subpkg') будет импортировать pkg.mod).

Таким образом, выражение также можно записать в виде

bar = import_module('..bar',package='project.bar') 
Смежные вопросы