Это звучит как общая проблема правильного управления зависимостями, которая не связана с вашей функцией общего пространства имен.Для вашей особой проблемы я бы рекомендовал следующее:
install_requires
только для абсолютно необходимых зависимостей (тех, которые должны присутствовать или программа не может быть выполнена), поэтому она не подходит для вашего случая.
Лучше использовать директиву extras_require
, которая позволяет указывать дополнительные зависимости в определенных случаях.Распространенными дополнениями являются dev
- пакеты, необходимые во время разработки, или doc
- пакеты, необходимые для создания документов.
Если ваши пакеты, находящиеся в одном и том же пространстве имен, называются nsp1, nsp2 и nsp3, вы можете указатьв любом из ваших пакетов в setup.py
:
setup(
name="Project-A",
...
extras_require={
'all': ["nsp1", "nsp2", "nsp3"],
'set1': ["nsp1", "nsp2"],
}
)
После этого вы можете установить их с помощью pip3 install nsp1[all]
(при условии, что вы расширили setup.py
для nsp1) или pip3 install .[all]
для локальной установки.
Если какой-либо из ваших «некоторых будущих проектов» нуждается именно в этих зависимостях, вы можете добавить эти дополнения к его зависимостям, например, в его setup.py
:
install_requires=['nsp1[all]', …]
Альтернативой может бытьиспользуйте requirement.txt
:
nsp1
nsp2
nsp3
и установите их с помощью pip install -rrequirement.txt