Я пытаюсь создать репозиторий github, который можно запустить из любого клона без зависимостей каталога hardcoding.sys.path.append модули относительно пути запуска скрипта
Допустим, в моем репо у меня есть питон скрипт называется myscript.py и он расположен по адресу:
/d/e/f/github/myrepo/myscript/myscript.py
Но я знаю, что мой сценарий зависит от общих инструментов полезности всегда расположены по адресу:
/d/e/f/github/myrepo/myutils/myutils.py
Таким образом, как я могу сказать, мой сценарий всегда загружать myutils.py, где относительный путь к myutils.py относительно myscript.py всегда ../myutils/myutils.py
на нет ж myscript.py выглядит следующим образом:
# Import modules
import sys
sys.path.append('/d/e/f/github/myrepo/myutils/')
import myutils
Как можно видеть теперь FULLPATH к myutils.py является жёстко, так что если кто-то клонирует их репо в их собственном компьютере, он не будет работать.
В идеале, пользователи должны иметь возможность запускать myscript.py следующим образом:
cd /d/e/f/github/myrepo/myscript/
python myscript.py -h
Или,
python /d/e/f/github/myrepo/myscript/myscript.py -h
И он должен работать без необходимости прописывать полный путь к модулю myutils, а скорее относительный путь ...
Я не думаю, что это хорошая идея добавить абсолютный путь 'myutils', который является подпакетом в вашем проекте в' sys.path', потому что он может загрязнять 'sys.path'. Но лучше просто добавить путь 'myrepo' в' sys.path' – flyer