Я работаю над проектом, который использует whoosh. Я хочу оставить исходное дерево whoosh на месте и иметь возможность импортировать с более высоких уровней.python - Deep import
Место фактического модуля Свист:
project\libs\whoosh\src\whoosh
Я хотел бы импортировать как:
import libs.whoosh
import libs.whoosh.index
etc.
Он достаточно прост, чтобы преобразовать каждый подкаталог в модуль питона, помещая __init__.py
файл который импортирует следующий подкаталог.
Проблема, однако, заключается в том, что whoosh's __init__.py
не раскрывает ни один из его подмодулей. Поэтому import libs.whoosh.index
работает только тогда, когда whoosh находится в системном пути; это ограничение, я не хочу манипулировать системным путем и не устанавливать whoosh в пакеты сайта.
Обычно (когда whoosh находится на системном пути), кажется, что внутренние импортные данные whoosh указаны полностью; т.е. от project\libs\whoosh\src\whoosh\index.py
:
from whoosh import __version__
from whoosh.legacy import toc_loaders
from whoosh.compat import pickle, string_type
from whoosh.fields import ensure_schema
наследия, Compat и поля являются всеми братскими индексировать. Импорт whoosh через цепочку из whoosh\src\whoosh
нарушает схему импорта.
Как я могу идти об этом без:
- установка Свист
- манипулируя системы путь
, если вы не хотите, чтобы «манипулировать путь системы, а также установки в свист сайта-пакеты», а затем использовать virtualenv. Взлом системы пакетов приносит больше проблем, чем загрязнение сайтов-пакетов –
Но я определенно хочу «взломать систему пакетов». – dilbert