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 для каждого модуля.

  • правильный способ найти каталог скриптов из setup.py в Python distutils?
  • Как вы можете связать весь свой код python с одним zip-файлом?
  • Использование setup.py для установки проекта python в качестве службы systemd
  • перечисление нескольких версий на pypi
  • Попытка ввода установки IOerror - нет setup.py
  • Установите новый модуль регулярных выражений с помощью setup.py
  • Что такое setup.py?
  • должен pytest et al. зайдите в tests_require или extras_require {testing }?
  • Как импортировать пакет PIP через Jython?
  • Обнаружение пути установки пакета python из setup.py
  • entry_points не создает пользовательские скрипты с помощью pip или easy_install в Python?
  •  
    Interesting Posts for Van-Lav

    Пояснения некоторые код Python

    Кросс-платформенный набор инструментов gui для развертывания приложений Python

    Django – перестроить строку запроса без одной из переменных

    Развертывание приложения Google App Engine

    Обнаружение дубликатов файлов MP3 с различными битрейтами и / или разными тегами ID3?

    Есть ли уловка «перегрузить оператор точки»?

    Могут ли генераторы использоваться с string.format в python?

    Как скопировать файлы с определенным расширением файла в папку в моем сценарии python (версия 2.5)?

    Как написать функцию с переменной извне?

    Ведение журнала на Python: использование миллисекунд в формате времени

    Есть ли простой способ избавиться от ненужных значений, которые появляются, когда вы используете SSH с помощью библиотеки Python в Paramiko и извлекаете вывод из CLI удаленной машины?

    Ошибка кодирования в Django на Heroku

    где в иерархии классов должны быть написаны методы экземпляра?

    Есть ли более Pythonic способ объединить заявление Else: Except :?

    Web.py на dotcloud с wsgi

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