У меня есть несколько пакетов Python, которые я хотел бы хранить в отдельных файловых системах, но, к сожалению, имеют одно и то же имя модуля верхнего уровня.Хранение пакетов Python с тем же именем верхнего уровня в разных каталогах
Для иллюстрации, структура каталогов выглядит следующим образом:
/fs1
/top
__init__.py
/sub1
__init__.py
/fs2
/top
__init__.py
/sub2
__init__.py
В Python 2.7, есть ли способ я могу настроить мой PYTHONPATH
, так что я мог бы импортировать как top.sub1
и top.sub2
в тот же сценарий? Добавление /fs1
и /fs2
не работает, поскольку оно позволяет импортировать один из двух подмодулей (в зависимости от того, что наступит раньше на PYTHONPATH
).
Я мог бы скопировать/обозначить два дерева в одном, но по практическим соображениям я бы предпочел не делать этого.
Да, есть способ, и это называется "пространства имен пакетов". http://stackoverflow.com/questions/1675734/how-do-i-create-a-namespace-package-in-python Обратите внимание, что если вы это сделаете, пакет 'top' должен быть пустым, это пространство имен не может содержат что-либо, кроме пакетов sub1 и sub2. –