Прежде всего: извините, я знаю, что вопрос об относительном импорте был много, но я просто не нашел решения. Если это возможно, я хотел бы использовать следующую структуру директорий:упаковка питона для относительного импорта
myClass/
__init__.py
test/
demo.py
benchmark.py
specs.py
src/
__init__.py
myClass.py
Теперь мои вопросы:
Как тестовые файлы в пакете правильно импортировать myClass.py?
Как вы импортируете пакет извне, если вы возьмете myClass в качестве подмодуля в libs/myClass или включите/myClass?
До сих пор я не мог найти изящное решение для этого. Из того, что я понимаю Guido's Decision это должно быть возможно сделать from ..src import myClass
но это будет ошибка:
ValueError: Attempted relative import in non-package
, который выглядит, как это не относится к MyClass как пакеты. Reading the docs:
The __init__.py files are required to make Python treat the directories as containing packages;
Кажется, я что-то, что определяет, где скрипты пакета являются, я должен использовать .pth не хватает?
@ Brent Newey, да, вы правы, относительный импорт, кажется, является постоянной темой, и после прочтения нескольких ответов я все еще чувствовал желание конкретно описать свою ситуацию. После показа этого q на канале #python IRC довольно много людей рекомендуют использовать плоскую структуру каталогов: «Многие люди сопротивляются тому, как Python хочет использовать каталоги и файлы для семантической информации о пространстве имен. Лучше всего просто сдаться и делать чего хочет Питон ». http://jcalderone.livejournal.com/39794.html – eerne 2010-12-03 18:24:45
Может ли кто-нибудь предоставить ссылку на некоторые пакеты реального мира с образцовым макетом каталога или после некоторых соглашений? (в идеале на github) – eerne 2010-12-03 18:31:07
Есть ли `__init __. py` в` test` каталоге? `ValueError: Попытка относительного импорта в non-package` может быть связана с ним. – jfs 2010-12-03 20:48:58