2016-04-18 3 views
-1

У меня проблема с методом __import__. Кажется, он импортирует только базовый каталог модуля, но не файл.__import__ импортирует только __init__.py

К примеру у меня есть:

test_suite/assert_array_length.py 

, когда я прохожу это в __import__:

moduleLocation = "test_suite.assert_array_length" 
module = __import__(moduleLocation) 
print module 

Я получаю:

[sub_directories]/test_suite/__init__.pyc 

Последовательность вызова происходит из run_tests.py в test_runner.py , test_runner.py затем импортирует assert_array_length.py. Они раскладывают так:

run_tests.py 
|-----------test_runner.py 
|-----------assert_array_length.py 

, потому что это импортирования __init__.py, я не могу получить то, что мне нужно из файла assert_array_length.py.

ответ

0

__import__ импортирует модуль, который вы запросили. Тем не менее, если вы проверили documentation, вы найдете следующее:

Когда имени переменной формы package.module, как правило, пакета верхнего уровня (имя до до первой точки) является, а не модуль по имени.

Вы можете предпочесть importlib.import_module, который будет возвращать package.module вместо package, если сказать ему, чтобы импортировать package.module.

+0

спасибо. Это прекрасно работает. –

Смежные вопросы