Как удалить пакет, установленный через pyenv / pip - PullRequest
0 голосов
/ 29 января 2020

У меня запутанная ситуация с исполняемыми файлами на пути, которые были установлены через pyenv / pip. История начинается с того, что у меня несколько python переводчиков с данным пакетом. Сегодня я узнал о pipx, который должен предоставить мне независимый от системы исполняемый файл из пакета python (исполняемый файл). После установки пакета pipx правильно предупреждает меня, что он уже существует. Однако не совсем понятно, как избавиться от него на моем пути, чтобы иметь возможность использовать новый правильный исполняемый файл.

Я попытался буквально удалить файл по пути, который был найден как дубликат, что привело к в забавную ситуацию ниже:

my_machine:proj_a ikkamens$ pipx install flynt --python python3.8
⚠️  Note: flynt was already on your PATH at /Users/ikkamens/.pyenv/shims/flynt
  installed package flynt 0.40.1, Python 3.8.0
  These apps are now globally available
    - flynt
done! ✨ ? ✨
my_machine:proj_a ikkamens$ flynt --help
pyenv: flynt: command not found

The 'flynt' command exists in these Python versions:
  3.6.8/envs/blues
  3.7.3
  3.8-dev
  blues

my_machine:proj_a ikkamens$ rm /Users/ikkamens/.pyenv/shims/flynt
my_machine:proj_a ikkamens$ flynt
-bash: /Users/ikkamens/.pyenv/shims/flynt: No such file or directory
my_machine:proj_a ikkamens$ cd
my_machine:~ ikkamens$ cat .bashrc | grep fl
my_machine:~ ikkamens$ which flynt
/Users/ikkamens/.local/bin/flynt
my_machine:~ ikkamens$ flynt
-bash: /Users/ikkamens/.pyenv/shims/flynt: No such file or directory

Как возможно, что which возвращает не то, что выполняется? Обратите внимание, что мой .bashr c не содержит псевдонимов или аналогичных (оператор grep). как полностью избавиться от всего, что осталось от старой установки?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Как прокомментировал @jordanm, проблема из-за bash хеширования поиска в PATH.

my_machine:~ ikkamens$ rm /Users/ikkamens/.pyenv/shims/flynt
my_machine:~ ikkamens$ flynt
-bash: /Users/ikkamens/.pyenv/shims/flynt: No such file or directory
my_machine:~ ikkamens$ which flynt
/Users/ikkamens/.local/bin/flynt
my_machine:~ ikkamens$ hash -r
my_machine:~ ikkamens$ flynt
Running flynt v.0.40.1
0 голосов
/ 10 февраля 2020

С pyenv у вас есть разные изолированные python среды. Прежде всего вы должны активировать одну из сред pyenv:

# check which virtual environments you have
pyenv virtualenvs

# activate one
pyenv activate blues
# seems that `blues` is your virtual environment with python 3.6.8
# then install your package into active virtual environment
pip install flynt
# also uninstall packages while being in your environment
...