Каковы правила для импорта в Python - PullRequest
2 голосов
/ 02 марта 2011

У меня есть структура каталогов:

../POC/mud/
            client/
            common/
            server/

, и я пытаюсь использовать следующий импорт:

from mud.server import config
from mud.common.lib import util

, но когда я пытаюсь импортировать config, я получаю ошибку:

Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from mud.server import config
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named mud.server
>>> from mud.common.lib import util
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named mud.common.lib
>>> 

Нужно ли находиться в определенном месте, чтобы импорт работал, или модули должны быть скомпилированы в ОС?эти "грязные" модули являются просто набором файлов Python .py

1 Ответ

5 голосов
/ 02 марта 2011

Сначала вам нужно иметь файл __init__.py в грязи и подпапках, хотя файл может быть пустым. Посмотрите учебник по Python в разделе пакетов: http://docs.python.org/tutorial/modules.html#packages

Кроме того, вы должны находиться в папке POC, чтобы операторы импорта работали, или вы соответственно установите PYTHONPATH env var или обновите sys.path динамически.

...