通过pyenv安装的解释器不会添加到$PATH

2024-10-03 21:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白为什么pyenv似乎不起作用。在

我的$PATH变量似乎没有被pyenv正确更新,因此无法找到通过pyenv安装的解释器。例如,对于python版本3.6.8:

$ pyenv versions
  system
* 3.4.10 (set by /Users/cglacet/.pyenv/version)
* 3.5.7 (set by /Users/cglacet/.pyenv/version)
* 3.6.8 (set by /Users/cglacet/.pyenv/version)
* 3.7.3 (set by /Users/cglacet/.pyenv/version)
* 3.8-dev (set by /Users/cglacet/.pyenv/version)

$ pyenv which python3.6
/Users/cglacet/.pyenv/versions/3.6.8/bin/python3.6

$(pyenv which python3.6) --version
Python 3.6.8

$ pyenv shell
pyenv: no shell-specific version configured

$ pyenv local
pyenv: no local version configured for this directory

在这里之前一切都很好,但是:

^{pr2}$

如果我检查我的PATH环境变量,我看不到/Users/cglacet/.pyenv/versions/3.x.x/bin形式的任何路径。在

注意,3.7.0是我在安装pyenv(系统版)之前的python版本。我期望的是3.6可用(所有版本都通过pyenv安装),这应该是cas,因为我将其作为一个全局解释器激活,如前所示。预期的行为是:

$ python3.6 --version
Python 3.6.8

Tags: pathno版本pyenvwhichbybinversion
1条回答
网友
1楼 · 发布于 2024-10-03 21:28:05

经过一番挖掘,我发现安装程序无法编辑我的.bash_profile。问题是pyenv本身不依赖于这些添加,因此bug是无声的(您只是没有在您的路径中有解释器)。在

如果在这种情况下,您必须运行install manually的这一部分,并在您的~/.bash_profile中添加以下内容(最好附加这个新路径,以便它在您的系统python路径之前到达,换句话说,在bash概要文件的末尾附加此路径):

export PATH=$(pyenv root)/shims:$PATH

这就解决了我遇到的问题(因为目录$(pyenv root)/shims包含您通过pyenv安装的所有解释器)。但您可能希望拥有pyenv提供的一整套功能(例如,命令的自动完成),这(理论上)可以通过将以下内容添加到您的.bash_profile而不是PATH导出中来完成:

^{pr2}$

但是对于我来说,由于pyenv init产生了一些错误代码(缺少function声明),另一方面,您可以使用以下方法,并且它应该可以工作(更好):

eval "$(pyenv init - | sed 's:^pyenv() :function pyenv():')"

我仍然不知道为什么在我的系统上安装失败了,如果有人能提供一个有趣的线索(这可能值得一个修复,因为我可能不是唯一一个有这个问题的人)。在

相关问题 更多 >