如何删除通过 pyenv/pip 安装的软件包
How to remove a package installed via pyenv/pip
我对通过 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
returns和执行的不一样呢?请注意,我的 .bashrc 不包含任何别名或类似名称(grep 语句)。如何彻底摆脱旧安装的遗留问题?
正如@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
使用 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
我对通过 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
returns和执行的不一样呢?请注意,我的 .bashrc 不包含任何别名或类似名称(grep 语句)。如何彻底摆脱旧安装的遗留问题?
正如@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
使用 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