Я всегда использовал Python для однофайловых скриптов, и теперь я работаю над своим первым «сложным» проектом, поэтому у меня нет опыта с пакетами в Python (3.x).Каков правильный способ обработки импорта в сложном проекте Python?
Я знаю, что это часто задаваемый вопрос, но мне не хватает чего-то для успешной организации импорта модулей в моем проекте, который должен использоваться как библиотека.
Предполагая, что следующий проект дерево:
myProject/
- subpackage1/
- __init__.py
- other1.py
- subpackage2/
- __init__.py
- other2.py
- __init__.py
- foo.py
- bar.py
Какой правильный способ импорта модулей друг от друга? В частности:
- импорт
foo
изbar
- импортера
foo
отother1
- импортера
other1
изother2
- импортом
foo
(который является библиотекой) из другого каталога во время развития (виртуальные среды правильный выбор?)
Спасибо!
EDIT: (чтобы уточнить вопрос) Я, очевидно, пробовал разные подходы, прежде чем спрашивать. То, что я видел в некоторых популярных проектах, использует абсолютный импорт, такой как from myProject.subpackage1.other1 import something
. Это похоже на чистое решение (похоже на то, что я привык делать на Java), но, приняв этот подход, я не могу просто запустить свой код из-за ошибок импорта. Может ли virtualenv
быть решением для установки пакетов, прежде чем пытаться их импортировать?