我想用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

当前回答

对我来说,通过Homebrew安装后,这在MacOS上用ZSH工作:

echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

我最初有eval "$(pyenv init -)"在我的~/。ZSHRC文件,但这似乎不起作用。 在遵循本指南:https://github.com/pyenv/pyenv#basic-github-checkout之后,我从.zshrc文件中删除了eval调用,并使用上述命令将其添加到.zprofile文件中,重新启动终端后一切正常。

其他回答

你忘记添加这个eval "$(pyenv init -)"。

将此添加到您的.bash_profile或.bashrc文件(mac <=10.14)或.zshrc文件(mac 10.15+)

我在一台运行Monterey并在Rosetta仿真终端上安装Pyenv的Apple M1 MacBook Pro上也遇到过同样的问题。

我的解决方案是在~/中添加以下内容。zshrc中:

eval "$(pyenv init -)"
eval "$(pyenv init --path)"

我没有向~/.zprofile添加任何内容。

我现在可以看到版本按照预期切换。

试试这个: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的shim位置,那么当你在shell中键入python时,你将无法更改python版本。

要正确使用pyenv, shim目录应该是PATH变量中的第一个内容。例如,

如果你的PATH看起来像

/usr/bin:/home/kenobi/.pyenv/shims:...

如果你在/usr/bin中有一个python可执行文件,你将不能正确使用pyenv。您应该在~/中安排您的PATH配置。Bashrc如下图

/home/kenobi/.pyenv/shims:/usr/bin:...

然后重新启动shell,就不会有问题了。 对我来说,我在~/.zshrc中有这些行

# PyEnv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"  # This line was causing the problem
eval "$(pyenv init --path)"

# Docker
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

正如您所看到的,我在pyenv配置行之后设置了export PATH=/usr/bin:$PATH。然后我通过像下面这样切换块来解决这个问题

# Docker
export PATH=/usr/bin:$PATH  # Not a problem anymore.
export DOCKER_HOST=unix:///run/user/1000/docker.sock

# PyEnv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

背景

现在:20210926 麦克:10.15.7 pyenv: 2.0.7

解决方案

对于当前控制台

eval "$(pyenv init --path)"

用于每次启动后的工作

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

这里是zsh,所以:

vi ~/.zshrc

add

Eval $(pyenv init——path)

完成了。