Я ищу пакет и загружаю библиотеку, которую я должен использовать PyPI в ближайшие дни, но я немного не уверен в моем подходе к пространству имен.упаковка общих пространств имен python
У меня есть несколько других несвязанных проектов с похожим подходом и хотелось бы дать им все одинаковое пространство имен. Например:
- Библиотека 1 Пространство имен:
abc.seo
- Библиотека 2 Пространство имен:
abc.ajax
- Библиотека 3 Пространство имен:
abc.ecommerce
- и т.д.
Проблема заключается в том, что я не уверен, если возможно, чтобы два отдельных пакета (например, яйца) сосуществовали с одним и тем же родительским пространством имен. Является ли этот подход проблематичным, или есть способ его преодоления? Какой лучший подход?
Библиотеки не должны быть упакованы вместе, они слишком несвязаны. Я хотел бы получить это прямо перед загрузкой, чтобы избежать болезненных изменений пространства имен после создания «официального» релиза.
(NB abc
не настоящее имя, я хотел, чтобы мой вопрос, чтобы быть свободным от рекламы)
UPDATE
Я пошел с нижеследующим, чтобы быть хорошим для людей без Setuptools установлено:
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
следующее в setup.py
:
setup(
...
namespace_packages = ['rollyourown'],
...
Вы просматривали различные пакеты eGenix 'mx' на PyPi? Посмотрите на них на примерах. Затем вы можете задать более * конкретные * вопросы на основе этого шаблона. –
Итак, вы хотите сказать, что для пользователя не сложно установить два отдельных пакета с одним и тем же родительским пространством имен? Это никогда не вызовет никаких проблем? Пакеты 'mx', кажется, имеют очень сложный процесс установки, я постараюсь изо всех сил увидеть, есть ли у них какие-либо специальные методы решения проблем пространства имен. –
Ваше «обновление» на самом деле является ответом, а не обновлением вашего вопроса. Я бы переместил его, чтобы ответить, поэтому мы можем проголосовать за него :) – bukzor