pyenv global x.x.x 不会在 linux 上更新 python 版本

pyenv global x.x.x does not update the python version on linux

我安装了 pyenv 并下载了 python 版本 3.6.15 和 3.7.12。当我运行

pyenv global 3.7.12
python -V

输出为:Python 3.10.2

pyenv versions 给出输出

system
3.6.15
* 3.7.12 (set by /home/frege/.pyenv/version)

$ echo $PYENV_ROOT: /home/frege/.pyenv

$ 其中 python: /user/bin/python

$ 类型 python:python 被散列 (/usr/bin/python)

我的 .bashrc

中有以下内容
export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

我已经重新启动了我的终端并且 $PATH 包含

/home/frege/.pyenv/plugins/pyenv-virtualenv/shims:
/home/frege/.pyenv/bin:
...
/usr/bin:

怎么了?

我知道让 pyenv 和 virtualenvs 一起工作可能会有问题。我来自 virtualenvwrapper,它使虚拟环境的工作变得简单,我发现 pyenv 有点文化冲击。

我终于整理了我的工作流程,我想我会 post 它在这里,因为它可能会对某人有所帮助。我的 OS 是 Manjaro。

我安装了pyenv:

curl https://pyenv.run | bash

.bashrc 添加了以下内容:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:${PATH}"
export PATH="$PYENV_ROOT/bin:$PATH"
export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true"
export WORKON_HOME=$HOME/.virtualenvs
eval "$(pyenv init -)"
pyenv virtualenvwrapper_lazy

(我在很多解释中都没有看到 export PATH="$PYENV_ROOT/shims:${PATH}" 这一行,但它在我的解释中很重要。)

要调用 python 的 全局 版本:

pyenv shell <version>

pyenv shell system

创建虚拟环境:

pyenv virtualenv <version> <env name>

激活虚拟环境:

pyenv activate <env name>

要停用虚拟环境:

source deactivate