Я хотел бы установить пакет пространства имен python, содержащий несколько связанных пакетов, которые необходимо устанавливать независимо, если явно не указаны зависимости. Однако существующие решения кажутся мне менее рутинными.
Один из пакетов содержит, например, логику проблем, а другие содержат вспомогательные функции, такие как построение графиков и экспорт данных. Логический пакет должен оставаться компактным и не может импортировать более numpy
, тогда как другие пакеты могут использовать более сложные пакеты, такие как pandas
и matplolib
. Я хотел бы настроить структуру пакета, которая выглядит как результирующее пространство имен пакета пространства имен, но без ненужной папки, вложив что-то вроде this:
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
IЯ подумал, что это похоже на обычный пакет с модулями, но я пока не нашел способа установить его как пакет, в то время как mainintainign опцию установки только определенных модулей, поэтому я предположил, что пакет пространства имен должен предлагать эту опцию, но я не могу получитьдля работы с 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 install из собственного пакета , но я бы хотел избежать использования множества подпапок, так как это создает риск максимального ограничения ограничений длины пути моей системы (+ это смущает всех остальных). Как мне настроить различные файлы 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