У меня есть пакет p
с модулями a
и b
. a
полагается на b
:
b.py
Содержание:
import a
Однако я хочу, чтобы b
импортировал мой a
модуль из того же каталога p
, а не только из a
модуля из PYTHONPATH
.
Итак, я пытаюсь изменить b.py
следующим образом:
from . import a
Это работает до тех пор, пока я импортирую b
, когда я за пределами каталога пакетов p
. Учитывая следующие файлы:
/tmp
/p
a.py
b.py
__init__.py
Следующие работы:
$ cd /tmp
$ echo 'import p.b' | python
Не работает следующее:
$ cd /tmp/p
$ echo 'import b' | python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "b.py", line 1, in <module>
from . import a
ValueError: Attempted relative import in non-package
Почему?
P.S. Я использую Python 2.7.3