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