Очень поздно, но это невероятно легко.Все, что вам нужно сделать, это изменить атрибут __path__
вашего пакета, чтобы он указывал на папку, в которой находятся ваши модули.Для этого lib
должен быть пакетом, а не просто модулем (т. Е. Папка с __init__.py
).По умолчанию __path__
- это список из одного элемента, который содержит путь к папке, в которой находится пакет - ['/path/to/lib']
.Это означает, что по умолчанию python выполняет поиск подмодулей в папке модулей (кажется, что это очень логично).
Вы можете изменить содержимое пути так, чтобы оно указывало на то место, где вы хотите, но оно должносодержат абсолютные пути.Если вы только append path/to/lib_python
, то python сначала выполнит поиск lib, найдет my_utils.py, а затем остановится.Таким образом, в этом случае вам нужно будет удалить my_utils.py
или поместить новый путь перед __path__
, чтобы сначала искать местоположение.Это также означает, что папка lib
может содержать свои собственные дополнительные модули для общих библиотек и все еще работать.
На практике:
lib / __ init __. Py
from os.path import join
__path__.insert(0, join(__path__[0], "..", "..", "python_lib"))