Есть ли способ импортировать модули с зависимостями в один и тот же каталог, используя абсолютный / относительный путь с «imp»?
Здесь следует структура каталогов:
.
├── importFrom
│ ├── dependant.py
│ └── dependence.py
└── test.py
файл test.py импортирует зависимый. py, используя:
modname=imp.load_source("testImp","importFrom/dependant.py")
, который, в свою очередь, напрямую импортирует зависимость.py с помощью:
import dependence
Вызов test.py дает
Traceback (most recent call last):
File "test.py", line 3, in <module>
modname=imp.load_source("testImp","importFrom/dependant.py")
File "importFrom/dependant.py", line 1, in <module>
import dependence
ImportError: No module named dependence
Может быть целесообразно, чтобы load_source добавлял путь к загруженному модулю в загрузчик, чтобы он находил его относительный зависимости автоматически. На данный момент единственная альтернатива, которую я нашел, - это добавить к системному пути, поместив в test.py
Изменить: я нашел лучший способ выполнить относительный импорт с путем, добавил файл в получить абсолютный путь вызывающего абонента (независимость от текущего рабочего каталога)
sys.path.append(os.path.join(os.path.dirname(__file__), 'importFrom'))
import dependant