如何修复“ pyenv:bash:找不到命令”

时间:2019-09-09 16:47:27

标签: python bash pyenv

我使用pyenv来管理我的Python环境,而仅运行bash时,我得到以下信息。

$ bash
pyenv: bash: command not found

我正在尝试解决pipenv shell失败并出现上述错误的原因,这就是我发现甚至bash都无法正常工作的原因。我尝试通过pipenv更新brew并运行pyenv rehash以重新生成垫片。并且bash肯定存在。

$ which bash
/bin/bash

我希望,如果pyenv找不到命令,将搜索PATH环境变量指定的后续路径。有趣的是,如果我执行一些不存在的命令,我不会收到pyenv错误。

$ someboguscommand
-bash: someboguscommand: command not found

这向我表明,在这种情况下,pyenv甚至没有搜索匹配的命令,并且搜索了PATH中的后续路径,因此必须对{{1}进行一些特殊处理}。

2 个答案:

答案 0 :(得分:1)

我在使用 PyenvCentOS 上设置 Python 3.8 时遇到了这个问题。

我在运行 pyenv install 3.8.2 时遇到了以下错误:

pyenv: bash: command not found

我是这样解决的

问题是 pyenv 没有添加到我的配置文件的加载路径中。

我所要做的就是执行以下操作:

在我的用户的主目录中打开 .bashrc 文件:

sudo nano ~/.bashrc

接下来,在文件底部添加以下内容并保存:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

最后,重新启动终端或运行以下命令将新添加的路径加载到当前的 shell/终端会话中:

exec "$SHELL"

现在,当您运行命令 pyenv install 3.8.2 时,它应该可以正常工作。

资源Managing Multiple Python Versions With pyenv

仅此而已。

我希望这会有所帮助

答案 1 :(得分:0)

问题是我的.bashrc中有以下行,该行在运行bash时被调用。这是我不再需要的行:

. virtualenvwrapper.sh

这反过来又调用了pyenv的virtualwrapper填充程序:

$ which virtualenvwrapper.sh
/Users/greg/.pyenv/shims/virtualenvwrapper.sh

这就是导致失败的原因。我可以通过使用bash运行调试跟踪来识别此问题:

$ bash -x
+ . virtualenvwrapper.sh
++ set -e
++ '[' -n '' ']'
++ program=bash
++ [[ bash = \p\y\t\h\o\n* ]]
++ export PYENV_ROOT=/Users/greg/.pyenv
++ PYENV_ROOT=/Users/greg/.pyenv
++ exec /usr/local/Cellar/pyenv/1.2.13_1/libexec/pyenv exec bash
pyenv: bash: command not found

感谢您对“那个家伙”,查尔斯·达菲和rje的有用评论!