Создайте пакет пространства имен для использования через $PYTHONPATH
Это немного неловко сформулированный вопрос, но в основном:
- Я могу активировать только пакеты Python, добавив в $PYTHONPATH
- Я хочу иметь возможность использовать произвольные пакеты Python таким образом
- Некоторые пакеты Python используют пространства имен пакетов
У меня есть скрипт-обертка для сборки пакета Python, он в основном просто делает setup.py --single-version-externally-managed
, Я могу добавить в этот процесс все, что захочу, но он должен быть общим, так как он используется для сборки большого количества пакетов.
Обычно я могу просто добавить результат сборки в $PYTHONPATH, и все хорошо.
Но с пакетами в пространстве имен (например, ndg-httpsclient
), похоже, они будут работать только в назначенном site-packages
каталог, потому что они используют .pth
файлы.
Смущает ndg/__init__.py
в источнике, который содержит шаблонный код пакета пространства имен:
__import__('pkg_resources').declare_namespace(__name__)
Так что, похоже, он должен быть импортирован непосредственно на $PYTHONPATH
, но тогда установка насмехается над:
Skipping installation of /<some-build-dir>/site-packages/ndg/__init__.py (namespace package)
Предположительно у этого есть веская причина для этого, но его зависимость от файлов.pth означает, что результат не может быть использован через $PYTHONPATH
только скопировав его в известное место, что я не могу сделать по техническим причинам. Я также не могу ввести произвольный питон в инициализацию приложения (так site.addsitedir()
тоже нет).
Итак, есть ли какой-то способ, которым я не знаю, чтобы импортировать модуль пространства имен, не помещая его в известное место? В качестве альтернативы, есть ли способ убедить setuptools не пропускать __init__.py
- и это действительно сработает?