Как я могу вызвать мой скрипт из любого места, когда он имеет относительный импорт? - PullRequest
0 голосов
/ 06 ноября 2018

Допустим, у меня есть сценарий, который я написал:

~/workspace/myscript/script.py

Если у меня есть, например, ~/bin, который я добавил к своему $PATH, я мог бы создать символическую ссылку

~/bin/script -> ~/workspace/myscript/script.py

И все работает отлично, я могу вызвать мой скрипт из любого места.

Тогда, скажем, мой сценарий начинает расти, и я выделяю его

~/workspace/myscript/
    script.py
    mylib.py

Теперь я столкнулся с проблемой, , как описано здесь , что если я вызываю свой скрипт Python напрямую (в отличие от импорта его как модуля), то я не могу выполнить относительный импорт.

Единственное решение, которое я видел, - это упаковать всю программу в полноценный пакет python с помощью setup.py и установить его в масштабе всей системы (или управлять папкой библиотеки Python в домашней директории).

Это похоже на дополнительную работу ради разбивки моего кода на несколько файлов Python.

Есть ли способ, которым я могу:

  1. Вызвать скрипт из любого места (вызвать его по пути),
  2. Код должен быть разбит на несколько файлов,
  3. Не нужно управлять полным пакетом python и установкой.

Все сразу?

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете добавить корневой каталог вашего модуля в путь Python:

export PYTHONPATH="$PYTHONPATH:~/workspace/myscript/"
...