Создайте пакет пространства имен для использования через $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 - и это действительно сработает?

0 ответов

Другие вопросы по тегам