Как импортировать модуль из локальной директории, а не из библиотеки, установленной в pip? - PullRequest
1 голос
/ 04 апреля 2019

Я клонировал библиотеку Python xyz в мой компьютер. Структура файла выглядит следующим образом:

>> project (folder)
    * main.py
    >> xyz_git (folder)
          >> xyz (folder)

В main.py

import sys
sys.path.insert(0, './xyz_git')
from xyz import Xyz

instance = Xyz()
print(instance.some_function())

Проблема в том, что у меня также установлен модуль pip xyz для Python по умолчанию. Даже если я удалю локальную папку, from xyz import Xyz все равно будет работать из-за установки pip по умолчанию. Как я могу убедиться, что импорт xyz не из локального каталога, выдаст ошибку?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Это не чисто, но я могу думать только о том, чтобы проверить, есть ли в вашем локальном xyz какой-либо атрибут, которого, как вы знаете, нет в установленном xyz. В качестве примера смотрите следующее:

main.py

import sys
sys.path.insert(0, './xyz_git')
import xyz
try:
    xyz.foo
except AttributeError as e:
    raise AttributeError('Local module xyz not installed!')
0 голосов
/ 04 апреля 2019

Если вы знаете путь к локальному каталогу, вставьте его в первую позицию массива sys.path, прежде чем пытаться импортировать его.

, например

import sys
mypath = "ABS_PATH_TO_PROJECT_ROOT_DIR"
sys.path.insert(0, mypath)
from module import var

Если вы используете git, вы можете добавить его как подмодуль git .

...