Как я могу запустить powerline (в глобальном pyenv) на bash, ссылаясь на путь пакета powerline? - PullRequest
0 голосов
/ 12 января 2020

Я недавно обновил свой глобальный pyenv, чтобы использовать более новую версию python и включить некоторые другие функции. Проблема в том, что это нарушает мою линию электропередачи (плагин строки состояния, который я использую на bash). Ранее я следовал их инструкциям , в которых упоминалось, что хранилище - root получено из pip show powerline-status.

Проблема в том, что команда предоставляет много другой информации, помимо самого пути. Есть ли способ, чтобы мой .bash_profile ссылался на путь пакета сайта, а не просто жестко запрограммировал абсолютный путь?

1 Ответ

0 голосов
/ 12 января 2020

Один из способов - использовать вывод команды типа 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...