Я хотел бы настроить пакет пространства имен python, содержащий несколько подключенных пакетов, которые необходимо устанавливать независимо, если явно не указаны зависимости. Однако существующие решения кажутся мне более или менее беспорядочными.
Например, один из пакетов содержит большую часть логики задач, а другие содержат вспомогательные функции, такие как построение графиков и экспорт данных. Пакет логики должен оставаться компактным и не может импортировать более numpy
, тогда как другие пакеты могут использовать более сложные пакеты, такие как pandas
и matplolib
. Я хотел бы настроить структуру пакета, которая выглядит как результирующее пространство имен пакета пространства имен, но без ненужных вложенных папок, например это:
namespace
├── logic
│ ├── __init__.py
| ├── functions.py
│ └── setup.py # requires numpy
├── datastructure
│ ├── __init__.py
| ├── functions.py
│ └── setup.py # requires namespace.logic and pandas
├── plotting
│ ├── __init__.py
| ├── functions.py
│ └── setup.py # requires namespace.logic, namespace.datastructure and matplotlib
└── setup.py #should install every package in namespace
Я подумал, что это выглядит как обычный пакет с модулями, но я еще не нашел способа настроить его как пакет, в то время как поддерживаю возможность установки только определенных модулей, поэтому я предположил, что пакет пространства имен должен предлагать эту опцию, но я не совсем могу заставить его работать с pip
На данный момент мне потребуется еще два уровня каталогов, например:
namespace
├── NamespaceLogic #don't want this
│ ├── namespace #don't want this
│ │ └── logic
│ │ └── __init__.py
│ └── setup.py
├── NamespaceDatastructure #don't want this
│ ├── namespace #don't want this
│ │ └── datastructure
│ │ └── __init__.py
│ └── setup.py
├── NamespacePlotting #don't want this
│ ├── namespace #don't want this
│ │ └── plotting
│ │ └── __init__.py
│ └── setup.py
└── setup.py
Моя проблема похожа на этот вопрос: Python pip устанавливает подпакет из собственного пакета , но я бы хотел избежать множества подпапок, так как это создает риск максимального ограничения длины пути в моей системе (+ это сбивает с толку всех остальных). Как мне нужно настроить различные файлы setup.py, чтобы иметь возможность запускать
pip install namespace #installs namespace.logic, namespace.datastructure, namespace.plotting
pip install namespce.logic #installs only namspace.logic and works in an environment with numpy which does not have pandas or matplotlib