我想用pyenv来切换python2和python3。

我成功下载了python2和python3和pyenv下面的代码。

brew install pyenv

brew install pyenv-virtualenv

pyenv install 2.7.10

pyenv install 3.5.0

但是,我不能从python2切换到python3..

Soma-Suzuki:~ Soma$ python --version
Python 2.7.10
Soma-Suzuki:~ Soma$ pyenv global
2.7.10
Soma-Suzuki:~ Soma$ pyenv versions
  system
* 2.7.10 (set by /Users/Soma/.pyenv/version)
  3.5.0
Soma-Suzuki:~ Soma$ pyenv global 3.5.0
Soma-Suzuki:~ Soma$ pyenv global
3.5.0
Soma-Suzuki:~ Soma$ pyenv versions
  system
  2.7.10
* 3.5.0 (set by /Users/Soma/.pyenv/version)
Soma-Suzuki:~ Soma$ python --version
Python 2.7.10
Soma-Suzuki:~ Soma$ 

我不明白为什么会这样。

我的python在这个目录中。

Soma-Suzuki:~ Soma$ which python
/usr/bin/python

当前回答

这对我来说是一个经常出现的问题,但这些答案都不起作用。我发现当我检查pyenv版本时,它会说:

Python 3.9.6(version set by PYENV_VERSION environment variable)

我只要不设置环境变量,问题就解决了。

其他回答

运行eval "$(pyenv init -)"(注意引号)在Mac OS的终端中添加Pyenv shims目录到PATH。然后再次运行pyenv global 3.5.0,并使用python3——version检查。

存在不能更新~/的情况。Bashrc或~/。Bash_profile,因为机器是共享的。在这种情况下,向bash脚本中添加eval "$(pyenv init——path)"仍然可以工作,因为pyenv init将pyenv shims的路径添加到$ path中。例如,pyenv将执行如下命令:

export PATH="/path/to/.pyenv/shims:${PATH}"

希望这能解释为什么它是有效的。或者,可以将/路径/导出到/。Pyenv /shims在他们的bash脚本中,它应该允许Pyenv切换python版本。

我还面临着eval "$(pyenv init -)"确实帮助将python版本切换到3.8.8的情况。但是当我启动一个虚拟环境时,虚拟环境创建中的python版本会失败:

virtualenv "$VENV_PATH" -p 3.8.8

RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.8.8'

但是通过eval "$(pyenv init——path)",虚拟环境也得到了3.8.8。python的版本。

背景

现在:20210926 麦克:10.15.7 pyenv: 2.0.7

解决方案

对于当前控制台

eval "$(pyenv init --path)"

用于每次启动后的工作

如果你想在Mac引导后自动生效,那么把它添加到你的引导脚本中

这里是zsh,所以:

vi ~/.zshrc

add

Eval $(pyenv init——path)

完成了。

试试这个:eval "$(pyenv init -)"

例子:

$ python -V
Python 2.7.9
mac:~ $ eval "$(pyenv init -)"
mac:~ $ python -V
Python 3.5.0

更多信息: https://github.com/pyenv/pyenv

如果你在过去的任何时候对pyenv进行了本地操作,它将在你的主目录~中创建一个新的.python_version文件。

如果您的开发环境没有正确配置,可能会影响pyenv全局命令。

删除这个文件,pyenv global就可以工作了。