Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何修复;pyenv:bash:command未找到;_Python_Bash_Pyenv - Fatal编程技术网

Python:如何修复;pyenv:bash:command未找到;

Python:如何修复;pyenv:bash:command未找到;,python,bash,pyenv,Python,Bash,Pyenv,我使用pyenv来管理我的Python环境,当我简单地运行bash时,我会得到以下结果 $ bash pyenv: bash: command not found 我试图解决为什么pipenv shell因上述错误而失败的问题,这就是我发现即使bash也无法工作的原因。我尝试通过brew更新pipenv,并运行pyenv-rehash重新生成垫片。而且bash肯定存在 $ which bash /bin/bash 我希望如果pyenv没有找到命令,将搜索PATH环境变量指定的后续路径。有趣的

我使用
pyenv
来管理我的Python环境,当我简单地运行
bash
时,我会得到以下结果

$ bash
pyenv: bash: command not found
我试图解决为什么
pipenv shell
因上述错误而失败的问题,这就是我发现即使
bash
也无法工作的原因。我尝试通过
brew
更新
pipenv
,并运行
pyenv-rehash
重新生成垫片。而且
bash
肯定存在

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

$ someboguscommand
-bash: someboguscommand: command not found

这对我来说意味着在这种情况下,
pyenv
甚至不会搜索匹配的命令,并且会搜索
PATH
中的后续路径,因此必须对
bash
进行一些特殊处理。问题是我在
.bashrc
中有以下行,在运行
bash
时调用的。这是我不再需要的一句话:

$ bash
pyenv: bash: command not found
. virtualenvwrapper.sh
这反过来又调用了pyenv的VirtualRapper垫片:

$ 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的有用评论

我在CentOS上使用Pyenv设置python3.8时遇到了这个问题

在运行
pyenv安装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/terminal会话中:

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

资源

就这些


我希望这有帮助

键入bash意味着什么?这表明问题在于init文件中的命令,例如
.bashrc
.bash\u profile
。您可以运行
bash-x
来显示正在进行的调试跟踪,以及它开始失败的地方。尽管出现了错误,但运行
bash
本身可能仍然有效,并且只会在
.bashrc
.bash\u profile
中显示一个关于失败的
pyenv
命令的警告,同时为您提供一个工作shell。更好的是,我建议
PS4=':$BASHPID:${bash\u SOURCE##*/:$LINENO+'bash-x
,用跟踪日志中的每个命令记录进程ID、源文件和行号。将这些日志中的
BASHPID
与您的启动shell中的日志进行比较,您就可以得出错误是在处理过程中还是在处理过程之外的结论性答案。顺便说一句,个人而言,冒着从建议转向倡导的风险,我更喜欢使用它来管理开发环境——它不仅可以让您控制每个shell或项目的范围内有哪些Python模块,还可以控制其他可执行文件和库的版本;这意味着您可以在一个环境中使用bash5,在另一个环境中使用bash3.2;或者在一个版本中基于zlib或sqlite的一个版本构建Python,在另一个版本中基于另一个版本构建Python;etc——同样,它支持管理Ruby/Node/Haskell/etc.编译器/解释器/库。pyenv的init代码位于其内部,似乎已被破坏。也许删除它,然后再次安装pyenv?