为何pyenv versions与python -V命令显示的Python版本不一致
版本不一致的根本原因
你未完成pyenv的shell环境初始化配置,导致系统优先加载自带的Python 2.7版本,而非pyenv设置的默认3.8.1版本
具体逻辑说明
- pyenv的核心运行逻辑是在系统PATH环境变量的最前方插入
pyenv shims目录,拦截所有Python相关的命令调用,再路由到你指定版本的可执行文件。当前你的PATH优先级里,系统默认的Python路径排在pyenv相关路径之前,执行python命令时会直接调用系统自带的2.7.16版本。 pyenv versions的输出仅代表pyenv自身的版本设置生效,和shell实际的命令查找优先级无关,所以会出现两个命令结果不一致的情况。
修复步骤
- 先执行
echo $SHELL判断你当前使用的shell类型,再对应写入初始化配置:- 若返回
/bin/bash,执行以下命令写入bash配置:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc- 若返回
/bin/zsh,执行以下命令写入zsh配置:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc - 若返回
- 重启终端后执行
python -V验证,此时输出应为Python 3.8.1。
内容的提问来源于stack exchange,提问作者Meysam
相关产品推荐
相关产品推荐

