Импорт из разных каталогов в Python - PullRequest
2 голосов
/ 28 января 2011

Это моя структура папок:

src/
  __init__py
  Lowlevel/
    __init__.py
    ModuleToCheck.Py
  Test/
    __init__.py
    ModuleToCheck_test.py

(__init__.py пустые файлы)

Теперь я хочу импортировать ModuleToCheck.py в ModuleToCheck_test.py

Как я могу сделать это, ничего не добавляя к sys.path?


Обновление:

from ..Lowlevel import ModuleToCheck приводит к:

src$ python Test/ModuleToCheck_test.py 
Traceback (most recent call last):
  File "Test/ModuleToCheck_test.py", line 6, in <module>
    from ..Lowlevel import ModuleToCheck
ValueError: Attempted relative import in non-package

1 Ответ

3 голосов
/ 28 января 2011

Ниже приведены данные от http://docs.python.org/tutorial/modules.html#intra-package-references

Обратите внимание, что как явный, так и неявный относительный импорт основаны на имени текущего модуля.Поскольку имя основного модуля всегда "__main__", модули, предназначенные для использования в качестве основного модуля приложения Python, всегда должны использовать абсолютный импорт.

Вы используете свой модуль ModuleToCheck_test.py в качестве основного модуля, отсюда и исключение.

Одним из решений является создание test.py модуля в вашем каталоге src, содержащего следующее:

import Test.ModuleToCheck_test

Затем вы можете запустить егомодуль с использованием python test.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...