Мне интересно, какой правильный/самый простой/самый pythonic способ иметь дело с подпроектами, которые вы хотите использовать с одним базовым пакетом. В настоящее время мы имеем файловую структуру, как это:Как управлять несколькими подпроектами python с помощью setuptools?
trunk\
proj1\setup.py
company_name\__init__.py + proj1's code
proj2\setup.py
company_name\__init__.py + proj2's code
Мы хотим, чтобы сохранить пространство имен COMPANY_NAME общим для всех наших проектов (? может быть, это само по себе является unpythonic), но когда proj1 и proj2 установлены в режиме разработки, первый установленный сломан. Похоже, import company_name...
путается, на какой пакет company_name нужно посмотреть, и он захватывает первый/последний/случайный.
Как это нормально обрабатывать в более крупном проекте python? Можно ли разрешить это с помощью setup.py в туловище, который создает своего рода мега-яйцо? Я не нашел никакой соответствующей информации о google или стеке, поэтому любая информация, даже ссылки, очень ценится!
редактировать: Я просто попытался добавить setup.py в корневой папке с
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
с в __init_.py
файлов соответствующего pkg_resources.declare_namespace(__name__)
, но ./setup.py bdist_egg
просто дает:
ошибку в Команда настройки company_name: Распространение не содержит модулей или пакетов для пакета пространства имен 'company_name'
Вот что я разработал для ключевого слова 'namespace_packages', и поэтому вы действительно сделали это правильно. –
Моя компания начала использовать пакеты пространства имен, и это закончилось огромной ошибкой, когда с ними была нарушена большая функциональность, доступная в обычных проектах (запуск модульных тестов, установка которых была сложной и т. Д.). Просто слово предупреждения. – Lucas