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

时间:2019-06-05 15:48:17

标签: python macos homebrew pyenv

我不知道为什么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

到目前为止,一切看起来都还不错,但是:

$ python3.6 --version
-bash: python3.6: command not found

$ python --version
Python 3.7.0

如果检查我的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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

eval "$(pyenv init -)"

但是对我来说,不能像pyenv init那样工作会产生一些错误的代码(缺少function声明),另一方面,您可以使用以下代码,它应该可以工作(更好):

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

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