树莓派pyenv没有正确识别到虚拟环境的pip

博主在使用pyenv管理树莓派的Python虚拟环境时,遇到了pip命令指向系统版本而非虚拟环境版本的问题。通过检查~/.profile文件发现$HOME/.local/bin被添加到$PATH最前面,导致pip指向错误。修改~/.profile中$PATH的顺序后,问题得到解决。现在pip能正确指向虚拟环境的版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折腾树莓派的时候遇到一个很诡异的问题。使用pyenv安装虚拟环境之后,python -V显示的是正确的虚拟环境python版本,然而which pip却显示的是系统的pip:

$ which python
/home/pi/.pyenv/shims/python
$ which pip
/home/pi/.local/bin/pip

pip list当然也是显示系统python环境安装的各种包。

最诡异的是,最开始虚拟环境的pip是正确指向/home/pi/.pyenv/shims/pip的,从某个时间开始新建的虚拟环境就都不行了。而且出现问题后,随时切换到正常的虚拟环境的pip仍然还是正常的。
于是折腾一通,发现在~/.profile里面写的是:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

确认一下:

$ echo $PATH
/home/pi/.local/bin:/home/pi/.pyenv/plugins/pyenv-virtualenv/shims:/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

所以$HOME/.local/bin被添加到$PATH最前面,导致$HOME/.local/bin/pip先被找到。

修改~/.profile,把$PATH提到前面。

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$PATH:$HOME/bin"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$PATH:$HOME/.local/bin"
fi

sudo reoot之后,再次查看$PATHwhich pip结果正确:

pi@raspberrypi:~ $ echo $PATH
/home/pi/.pyenv/plugins/pyenv-virtualenv/shims:/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/pi/.local/bin

pi@raspberrypi:~ $ pyenv activate myenv1
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

(myenv1) pi@raspberrypi:~ $ which pip
/home/pi/.pyenv/shims/pip

然后 pip list结果就是一个新的基本python环境了:

$ pip list
Package    Version
---------- -------
pip        22.1.2
setuptools 40.8.0

但是为什么以前是好的呢? 百思不得其解。改了之后问题暂时解决。其他系统也没看到过类似问题。就先这样吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值