我不明白为什么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 安装的所有版本),应该是这样,因为我将其激活为全局解释器,如前所示。预期的行为是:
$ python3.6 --version
Python 3.6.8
经过一番挖掘后,我发现自制程序安装无法编辑我的.bash_profile
。问题是pyenv
本身不依赖于这些添加,因此错误是无声的(你只是在你的路径中没有解释器)。
如果您遇到这种情况,则必须运行部分安装手动(从“#2 为 Pyenv 配置 shell 环境”开始) https://github.com/pyenv/pyenv#basic-github-checkout and 将以下内容添加到您的~/.bash_profile
(最好附加这个新路径,以便它到达系统 python 路径之前,换句话说,将其附加到 bash 配置文件的末尾):
export PATH=$(pyenv root)/shims:$PATH
这解决了我遇到的问题(作为目录$(pyenv root)/shims
包含您通过安装的所有解释器pyenv
)。但是您可能希望拥有 pyenv 提供的完整功能集(例如,命令自动完成),这(理论上)可以通过将以下内容添加到您的.bash_profile
而不是PATH
export:
eval "$(pyenv init -)"
但对我来说这不起作用pyenv init
产生了一些错误的代码(缺少function
声明),另一方面,您可以使用以下内容,它应该可以工作(更好):
eval "$(pyenv init - | sed 's:^pyenv() :function pyenv():')"
我仍然不知道为什么我的系统上安装失败,如果有人作为线索会很有趣(这可能值得修复,因为我可能不会是唯一遇到此问题的人)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)