执行pyenv global 3.7.2后Python版本未切换问题求助(Ubuntu16.04)
1. 配置文件加载优先级问题
Ubuntu 16.04 中登录式 shell(SSH 登录、图形界面默认终端等场景)默认优先加载 ~/.bash_profile/~/.profile,不会直接加载 ~/.bashrc,你把 pyenv 配置写在 ~/.bashrc 里可能未被实际加载。
解决步骤:
- 检查家目录下是否存在
~/.bash_profile或~/.profile文件,在文件末尾添加 pyenv 配置,或者添加一行source ~/.bashrc让配置生效:
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
- 执行对应配置文件的加载命令,或者直接重启终端:
source ~/.bash_profile(修改的是哪个文件就加载哪个)
2. PATH 路径优先级错误
运行命令 echo $PATH 查看输出,确认 $HOME/.pyenv/shims 和 $HOME/.pyenv/bin 路径是否排在最前面,如果系统 Python 路径(如 /usr/bin)在 pyenv 路径之前,就会优先调用系统自带 Python。
如果优先级错误,检查你写的 PATH 配置是否把 pyenv 目录放在 PATH 开头,即必须是 export PATH="$PYENV_ROOT/bin:$PATH",不能写反为 $PATH:$PYENV_ROOT/bin。
3. Python 别名冲突
运行 alias python 查看是否有别名配置把 python 指向了系统的 /usr/bin/python3.5,如果有输出,删除 ~/.bashrc 或 ~/.bash_aliases 中对应的别名配置即可。
4. 未执行 shims 重哈希
pyenv 安装新版本 Python 后需要重建 shims 索引,运行命令:pyenv rehash
之后再执行 python -V 测试版本是否正常。
5. 临时 shell 版本变量未生效
运行 echo $PYENV_VERSION 查看输出,如果为空或不是 3.7.2,可手动设置当前 shell 的 Python 版本:pyenv shell 3.7.2
再测试版本是否切换成功。
额外提醒:你贴的依赖安装命令存在笔误,
su sudo apt-get应为sudo apt-get,如果后续出现依赖相关报错,可修正命令后重新执行安装。
内容的提问来源于stack exchange,提问作者Shale

