При импорте модуля из python подмодули исчезают - PullRequest
0 голосов
/ 24 ноября 2011

У меня установлен ipython (0.12.dev), и я заметил, что не могу использовать его в проекте с модулем path из-за конфликта имен.Это понятно, но проблема в том, что когда я импортирую полный путь к модулю, подмодули, которые меня интересуют, отсутствуют.

Например, если я запускаю это в обычном (без path) каталоге:

>>> import IPython.external.path
>>> dir(IPython.external.path)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_path', 'path']

Но если я запускаю его в проекте, в котором есть модуль path (или просто mkdir path; touch path/__init__.py):

>>> import IPython.external.path
>>> dir(IPython.external.path)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']

Последние два подмодуля (_path и path) отсутствуют.

Есть ли способ доступа к этим модулям?

1 Ответ

1 голос
/ 24 ноября 2011

path - сторонняя библиотека, которую IPython попытается использовать, если она есть.К сожалению, это означает, что он пытается использовать ваш модуль пути или пакет, когда он находится в рабочем каталоге.

Один простой обходной путь - запустить IPython в другом каталоге и cd myproject внутри IPython (но тогда вы не будетеиспользовать модуль пути).

Чтобы получить доступ к модулю пути, поставляемому с IPython, выполните команду from IPython.external.path import _path.Вы можете изменить IPython/external/path/__init__.py, чтобы перейти прямо к включенной копии.

...