Как импортировать модули с зависимостями по одному и тому же абсолютному / относительному пути с imp?

Есть ли способ импортировать модули с зависимостями в один и тот же каталог, используя абсолютный / относительный путь с «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
11
задан Ciro Santilli 新疆改造中心法轮功六四事件 18 December 2014 в 22:40
поделиться