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

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

折腾树莓派的时候遇到一个很诡异的问题。使用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

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

当你使用`pip install`命令时,默认情况下,它会将Python包安装到你的系统级别的Python环境中。如果你在使用虚拟环境,并且希望将包安装到特定的虚拟环境中,你需要先激活这个虚拟环境。 激活虚拟环境的方法取决于你使用的虚拟环境工具。以下是一些常见的虚拟环境管理工具以及激活它们的命令: 对于`venv`(Python 3.3+自带的虚拟环境工具),激活虚拟环境的命令通常如下: ```bash # Windows \path\to\env\Scripts\activate # macOS/Linux source /path/to/env/bin/activate ``` 对于`virtualenv`,激活命令可能如下: ```bash # Windows \path\to\env\Scripts\activate # macOS/Linux source /path/to/env/bin/activate ``` 在虚拟环境激活之后,当你执行`pip install`命令时,包将会被安装到该虚拟环境的路径下,而不是系统Python环境的路径下。 如果你已经激活了虚拟环境,但还是遇到了包安装到系统路径的问题,可能是因为你的`pip`命令默认指向了系统环境。这时,你可以使用`pip`命令的`--target`选项来指定安装路径,或者确保你的虚拟环境的`pip`命令是激活后使用的。 例如,你可以使用以下命令来指定安装路径: ```bash pip install package_name --target /path/to/virtual/environment/lib/site-packages ``` 请确保替换`package_name`为你想要安装的包名,以及`/path/to/virtual/environment/lib/site-packages`为你虚拟环境的site-packages路径。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值