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

当前回答

假设你是MacOS用户……

Run

pyenv init

要得到这个建议:

# See the README for instructions on how to set up
# your shell environment for Pyenv.

所以,去https://github.com/pyenv/pyenv#readme获取这个小贴士吧:

Zsh: MacOS,如果Pyenv安装了Homebrew:

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

确保你的终端 应用程序将shell作为登录shell运行。

适用于macOS Monterey 12.0.1和pyenv 2.2.0。 Pyenv通过brew安装,python通过Pyenv install安装。

其他回答

以上答案没有一个管用。看起来我没有遵循正确的安装过程。我通过以下方法来解决这个问题:

进入~/.zshrc 在文件末尾添加别名brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew' 执行pyenv init命令

在pyenv文档中有更多关于这方面的内容

(2021年7月) 如果您在运行eval "$(pyenv init -)"时看到此消息

WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.

您应该像警告所说的那样检查pyenv init的消息,但简而言之,您可以使用eval "$(pyenv init——path)"来代替。

不要忘记相应地更新~/。bash_profile、~ /。zprofile ~ /。bashrc,(~ /。ZSHRC或类似文件(如有需要)。

这个答案只适用于使用Fish shell并找到此线程的人。Pyenv使用shims, ref,所以为了让Pyenv与你的fish shell一起工作,你必须编辑你的~/.config/fish/config。fish文件在$PATH变量的开头追加pyen shim目录。这是我的配置。鱼看起来像。

### PATH ###
set default_path /usr/local/bin /usr/bin /usr/sbin /bin /sbin
set macports /opt/local/bin
set androiddev ~/Android\ Development/platform-tools/
set rbenv ~/.rbenv/shims/
set pyenv ~/.pyenv/shims/
set anaconda /Users/m4punk/anaconda/bin/
set pg_config /Applications/Postgres.app/Contents/Versions/9.5/bin/


### Virtual Enviroment Wrapper ###

set -g VIRTUALFISH_HOME ~/Documents/Coding/python/virtualenvs
set -g VIRTUALFISH_DEFAULT_PYTHON /usr/local/bin/python3
eval (python -m virtualfish)

### NVM Settings ###
set -g NVM_DIR ~/.nvm

set -gx PATH $pyenv $default_path $macports $androiddev $rbenv $pg_config

setenv EDITOR sublime

这里的相关行是

set pyenv ~/.pyenv/shims/

and

set -gx PATH $pyenv $default_path $macports $androiddev $rbenv $pg_config

第一个函数为pyenv shim路径创建一个变量,第二个函数将它添加到路径变量的前面。只需保存并关闭,重新启动终端会话,你应该都设置好了。

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

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

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

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

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

如果这里的Readme不起作用: https://github.com/pyenv/pyenv

仔细检查之前是否手动设置了路径。在我的情况下,我在我的.zshrc文件中添加了别名到旧的python,删除它后工作得很好!