Python 2 и 3 совместимые модули пространства имен (с использованием pip)

Как можно построить несколько модулей python, совместно использующих одно и то же пространство имен, совместимое для Python 2.7+ и 3.3+?

Давайте назовем test пространства имен. Теперь я хочу иметь два отдельных модуля, называемых test.foo а другой – test.bar . Тем не менее, я в настоящее время разрабатываю test.helloworld который зависит от обоих: test.foo и test.bar . Оба они перечислены в файле requirements.txt .

Модули test.foo и test.bar в настоящее время используют решение Python 2 для пакетов пространства имен:

 import pkg_resources pkg_resources.declare_namespace(__name__) 

Запустив предложенную команду pip для режима разработки pip install -e . превращается в: ImportError: No module named 'test.helloworld' при импорте test.foo или test.bar не работает.

Решение Python 3 для пакетов пространства имен – это пакеты неявных пакетов имен, в которых пакет пространства имен не имеет файла __init__.py . К сожалению, это не работает для версий Python 2.

Как я могу разработать решение для Python 2 и 3 (что позволяет мне использовать pip install -e . )? Решение « --egg не работает для меня, поскольку оно уже устарело.

One Solution collect form web for “Python 2 и 3 совместимые модули пространства имен (с использованием pip)”

См. Ответ на аналогичный вопрос для получения полных инструкций, которые работают как на python 2, так и на 3.

Короче говоря, setup.py должно иметь уникальное имя для каждого модуля и общее определение namespace_packages в дополнение к __init__.py объявляющему пространство имен, заданное в namespace_packages .

Если у вас все еще есть проблемы, отправьте свои setup.py и __init__.py для каждого модуля.

  • Как добавить данные пакета рекурсивно в Python setup.py?
  • Как настроить инструмент setup.py для использования колесных пакетов
  • Как импортировать пакет PIP через Jython?
  • Как можно указать или добавить каталог в путь поиска Python.h во время сборки / установки модуля с помощью setup.py?
  • Расширение cython для построения Python с установкой создает вложенную папку, когда существует __init__.py
  • Python setup.py call makefile не включает двоичные файлы
  • Попытка ввода установки IOerror - нет setup.py
  • перечисление нескольких версий на pypi
  •  
    Interesting Posts for Van-Lav

    Google App Engine: как я могу программно получить доступ к свойствам моего класса модели?

    Установленный Python 3 в Mac OS X, но его все еще Python 2.7

    Как использовать can_add_related в Django Admin

    Сериализатор Django-REST: Queryset не фильтрует результаты PrimaryKeyRelatedField

    Python: возможно ли получить доступ к возвращаемому значению внутри предложения `finally`?

    Как сделать «боковой вид взрыва ()» в пандах

    django – regex для необязательных параметров URL

    Python: try-catch-else без обработки исключения. Возможное?

    Почему этот тег пуст, когда разбирается с красивым супом?

    Перенаправить результаты командной строки в графический интерфейс tkinter

    Комбинации замков для динамического размера замка

    Посев и повторное использование случайных семян Python

    Тестирование равенства с плавающей точкой

    Активный файл настроек Django от работника сельдерей

    получить точность классификации по тестовым данным с использованием предыдущей сохраненной модели

    Python - лучший язык программирования в мире.