#python #python-import #directory-structure
#питон #python-импорт #структура каталогов
Вопрос:
Представьте, что у меня следующая структура:
├─ main.py
├─ stuff/
├─ more_stuff_one/
├── main.py
├─ more_stuff_two/
├── main.py
Прямо сейчас, main.py
в корневой папке, я делаю:
from stuff.more_stuff_one import main as more_stuff_one
from stuff.more_stuff_two import main as more_stuff_two
Есть ли способ добиться того же результата без необходимости явно просматривать каждую вложенную папку в stuff
? Я хотел бы импортировать каждый main.py
из каждой вложенной stuff
папки и назвать его как вложенную папку.
Комментарии:
1. Допустим, нам удалось импортировать все сразу. как вы собираетесь использовать main.py ? есть два
main.py
файла, как вы собираетесь их различать?2. Присвоив каждому из них уникальный псевдоним (имя родительской папки). Или я что-то упускаю?
3. вы могли бы использовать init.py файл из родительской папки. импортируйте в него дочерние элементы. Затем при использовании:
from stuff import more_stuff_one, more_stuff_two
Ответ №1:
вы можете использовать __init__.py
файл из родительской папки. импортируйте в него дочерние элементы. Вам все равно придется просматривать вложенные папки, но они будут «скрыты»
├─ main.py
├─ stuff/
├─ __init__.py
├─ more_stuff_one/
├── main.py
├─ more_stuff_two/
├── main.py
__init__.py
содержимое:
from stuff.more_stuff_one import main as more_stuff_one
from stuff.more_stuff_two import main as more_stuff_two
использование от main.py
:
from stuff import more_stuff_one, more_stuff_two
Комментарии:
1. Это просто перенос импорта из одного файла в другой. Мне не нужно явно импортировать все с таким псевдонимом . Во всяком случае, это добавляет больше кода к общему количеству.