python - 通过 pyenv 安装的解释器不会添加到 $PATH
问题描述
我不知道为什么pyenv
(通过自制软件安装)似乎不起作用。
pyenv似乎$PATH
没有正确更新我的变量,因此找不到通过 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 安装的所有版本),这应该是我将它激活为全局解释器的情况,如前所示。预期的行为是:
$ python3.6 --version
Python 3.6.8
解决方案
经过一番挖掘,我发现 homebrew install 无法编辑我的.bash_profile
. 问题是它pyenv
本身不依赖于这些添加,因此该错误是无声的(您的路径中没有解释器)。
如果你在这种情况下,你将不得不手动运行部分安装(从“#2 为 Pyenv 配置你的 shell 环境”开始,并在你的~/.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():')"
我仍然不知道为什么在我的系统上安装失败,如果有人作为有趣的线索(这可能值得修复,因为我可能不会是唯一遇到这个问题的人)。
推荐阅读
- node.js - 如何在 Windows 上使用 Node.js 获得进程的延迟?
- javascript - 无法使用 javascript 选择文本字段
- google-apps-script - 创建可以克隆的容器绑定脚本的最佳方法是什么?
- assembly - 为什么'len equ $-aa'在程序集(emu8086)的源地址中不起作用?
- c - 计算多个循环的时间
- dynamics-crm - 如何消除实体视图的重复值?
- javascript - “Onvalid” JQuery 的术语
- swift - 具有绑定的条件视图不起作用
- redux - 我的基本 redux 商店没有 console.log 状态更改
- angular - CanDeactive Guard:通过 router.navigateByUrl() 路由时如何重置活动类