Импорт модуля с пользовательским поиском
У меня есть некоторые проблемы со структурой моего проекта.
По историческим причинам проект выглядит так:
Source/
__init__.py
module1/
__init__.py
script1.py
module2/
__init__.py
script2.py
и в производстве он развертывается так
server/
__init__.py
module1/
__init__.py
script1.py
module2/
__init__.py
script2.py
Проблема в том, что script2.py
имеет такой импорт:
from server.module1.script1 import something
Можно ли сказать Python для поиска server.***
не в server/***
но в Source/***
?
Прямо сейчас я сделал это с символическими ссылками, но это выглядит некрасиво
1 ответ
Решение
Вы всегда можете добавить ключи к sys.modules
толковый словарь; они действуют как псевдонимы для модуля:
import sys
try:
import server
except ImportError:
import Source
sys.modules['server'] = Source
однажды server
это запись в sys.modules
любые субмодули и пакеты будут найдены, а также server
запись будет использоваться в качестве отправной точки для дальнейшего импорта.