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

5

我有MacOS Catalina操作系统,并安装了最新版本的Python 3.8.5,使用了brew install命令。随后我发现了pyenv并进行了安装。我按照https://github.com/pyenv/pyenv#basic-github-checkout文档中的第3步的说明操作,但在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 github上的步骤3有关,我们在其中追加了一些内容?)。

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 install python_version_to_install 安装了 pyenv 版本? - harryghgim
@harryghgim 我使用了 brew 来安装它,按照这里的步骤 - https://github.com/pyenv/pyenv#installation - linuxNoob
1个回答

3

当我运行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

你的.zshrc文件中的PYENV_ROOTPATH看起来有些奇怪。根据安装指南,它们应该是像上面这样的东西。请将它们改为如上所示。

似乎你没有在终端中运行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

然后它会安装特定版本的Python。安装完成后,再次运行pyenv versions查看列表中是否也有已安装的Python版本。


1
所以我已经使用brew安装了Python 3.8.5,我只想让pyenv引用它,不想重新安装它。 - linuxNoob
1
如果您想在运行pyenv versions时看到3.8.5版本,您需要使用pyenv install进行安装。系统Python版本(在安装pyenv之前已经存在的版本)将显示为“system”。我正在使用由brew安装的Python 3.8.5,并且这是我的系统Python。 - harryghgim
1
听起来 pyenv 只有在我使用它安装 Python 时才有用,否则就没有意义了。 - linuxNoob
1
您可以通过运行 pyenv global python_version 全局设置不同的版本,也可以通过在项目文件夹中运行 pyenv local python_version 来进行本地设置。Airflow 可以作为 Python 包进行安装,因此如果您设置了要在其中安装 Airflow 的特定 Python 版本,并在该虚拟环境中创建了 virtualvenvvenv 并安装了 Airflow,那么 pyenv 可以满足您的需求。 - harryghgim
pyenv global 返回系统版本,但 python --version 显示的是 2.7.16 版本。 - linuxNoob
显示剩余13条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接