Pyenv无法在MacOS Catalina上检测到已安装的python版本

问题描述

我有MacOS Catalina,并且继续进行操作,为最新版本的brew install 3.8.5做了python。然后,我发现了pyenv并进行了安装。我按照编号3在https://github.com/pyenv/pyenv#basic-github-checkout上的步骤进行操作,但在pyenv中仍然看不到任何python版本。

我同时拥有.zprofile和.zshrc文件,并且想知道这是否引起问题。这是我的echo $PATH-

/Users/pq0252/.pyenv/shims/shims:/Users/pq0252/.pyenv/shims/shims:/Users/pq0252/.pyenv/shims:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 

这是pyenv版本的输出

pyenv versions
* system (set by /Users/pq0252/.pyenv/shims/version) 

这是.zprofile内容-

 #Setting PATH for Python 3.8.   
 #The original version is saved in .zprofile.pysave.   
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"   
export PATH 

这里是.zshrc内容(这似乎是在重复if的条件,尽管我只添加了一次,我认为它与pyenv上的步骤3有关github,我们要附加到哪里?)。

export PYENV_ROOT="$HOME/.pyenv/shims"
export PATH="$PYENV_ROOT:$PATH"
export pipenv_PYTHON="$PYENV_ROOT/python"
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\n$
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

我应该删除.zshrc中的条目,而是将所有内容添加.zprofile还是我遗漏了其他东西? python3 --version确实显示3.8.5。

解决方法

这是我运行pyenv versions

时看到的内容
➜  ~ pyenv versions
* system (set by /Users/gwanghyeongim/.pyenv/version)
  3.7.6
  3.7.7

这就是我的.zshrc文件中的内容。

# pyenv config
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

您在PYENV_ROOT中的PATH.zshrc看起来很奇怪。根据安装指南,它们应该看起来像上面的样子。让它们像上面一样。

您似乎没有在终端中运行echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc,而是直接将其放在.zshrc中。删除以echo -e开头的代码块,然后在终端中运行代码。然后您的.zshrc看起来就像上面的东西。

现在尝试运行pyenv install version_to_install,其中version_to_install是要与pyenv一起安装的python。例如

pyenv install 3.7.7

然后将安装特定版本。安装完成后,再次运行pyenv versions,查看列表中是否也看到了已安装的python版本。