Как сделать подпакет доступным для импорта без указания корневого пакетаPython

Программы на Python
Ответить
Anonymous
 Как сделать подпакет доступным для импорта без указания корневого пакета

Сообщение Anonymous »

Структура моего демонстрационного проекта:

Код: Выделить всё

project_root_directory
├── pyproject.toml
└── src/
└── root/
├── __init__.py
├── module.py
│
├── nested_a/
│   ├── __init__.py
│   ├── ...
│   └── module.py
│
└── nested_b/
├── __init__.py
├── ...
└── module.py
Содержимое pyproject.toml самое простое:

Код: Выделить всё

[project]
dependencies = []
description = "Friends"
name = "demo"
requires-python = ">=3.11"
version = "0.0.1"

[build-system]
build-backend = "setuptools.build_meta"
requires = [ "setuptools",]

[[project.authors]]
name = "Ross Geller"

Согласно документации, автоматическое обнаружение включено.
Это позволяет мне импортировать пакеты из любого места следующим образом:

Код: Выделить всё

import root

import root.nested_a
import root.nested_a

import root.nested_a.module
import root.nested_b.module
Пока все хорошо. Но в некоторых реальных проектах мне хотелось бы сделать что-то такое:

Код: Выделить всё

import root

import nested_a
import nested_b

import nested_a.module
import nested_b.module
Как этого добиться?
И еще одна дополнительная функция для меня: «псевдонимы» для пакетов

Код: Выделить всё

import my_pretty_root_name  # instead of import root
Но настоящее имя пакета должно быть доступно:

Код: Выделить всё

import my_pretty_root_name  # instead of import root
import root  # also works
Возможно? (без изменения названий каталогов)
Я читал документацию, но у меня получилось застрял.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ot-package
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»