Один из способов - использовать вывод команды типа python -c "import powerline as _; print(_.__path__[0])"
, которая распечатает каталог пакета. используя его в качестве базового пути, вы можете вызвать powerline. sh. Вот что у меня есть в моем файле .bash_profile для этого:
#Powerline shell invoke
## Note: if you've upgrade pyenv and have with old powerline installed,
## make sure you 'pyenv shell' to the older release and
## uninstall powerline first. Otherwise you'll get 'command not found' errors.
## 1. start daemon - done in 'quiet' mode for speed optimization
powerline-daemon -q
## 2. start powerline shell
export POWERLINE_SITE_PACKAGE_PATH=`python -c "import powerline as _; print(_.__path__[0])"`
. $POWERLINE_SITE_PACKAGE_PATH/bindings/bash/powerline.sh
Предупреждение: вам может понадобиться что-то более сложное, чем это, если вы регулярно используете локальную среду pyenv.
Примечание: не могли бы вы кешировать это значение, поэтому мне не нужно каждый раз вызывать python? Теоретически да, но тогда это становится сложным с точки зрения проверки, когда происходит изменение. Вы также можете просто вставить абсолютный путь. Вам нужно либо сохранить путь к файлу и очистить его. Сохраняя это простым пока. Простое тестирование для переменной (выполнение чего-то вроде if [ -z ${POWERLINE_SITE_PACKAGE_PATH+x} ] ; then .....; fi
не будет сохраняться в течение bash сеансов.
ответ, вдохновленный Как мне найти местоположение моего каталога Python site-packages