【发布时间】:2023-12-20 05:52:02
【问题描述】:
一段时间以来,我一直在使用 pyenv 在我的 mac 上管理 python 版本和虚拟环境。
最近我重新安装了pyenv,从那时起,在我尝试运行的每个pyenv 命令上,我都会收到以下错误
/usr/local/bin/pyenv:94: command not found: shopt
我的默认 shell 是最新的 MacOS 的默认 shell,即 zsh。
在寻找修复程序时,我发现它与bash 干扰zsh 有关。
我的默认 shell 在设置中是 zsh,~/.bash_profile、/etc/profile 和 /etc/bashrc 的内容都被注释掉了,但我仍然遇到问题。
我的操作系统版本是:10.15.4.
我也尝试重新安装pyenv,但我遇到了同样的错误。
我无法运行任何pyenv 相关命令。
编辑 1
根据文档,我的.zshrc 中已经有这些行,但正如您所见,即使这样运行命令pyenv root,这也会给我同样的shopt 错误。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$(pyenv root)/shims:$(pyenv root)/completions/pyenv.zsh:$PATH"
编辑 2
运行
env并在您的问题中添加输出
TMPDIR=/var/folders/gm/t0h6v8jx4bqd6cj73_k27myw0000gp/T/
XPC_FLAGS=0x0
TERM_PROGRAM_VERSION=433
TERM_PROGRAM=Apple_Terminal
XPC_SERVICE_NAME=0
TERM_SESSION_ID=55A65E3A-9B71-4C8A-81B8-0170EEAE3DCE
TERM=xterm-256color
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.j6zkqCw6Of/Listeners
SHELL=/bin/zsh
HOME=/Users/abc
LOGNAME=abc
USER=abc
PATH=/usr/local/opt/openssl@1.1/bin:/Users/saadali/Library/Python/3.7/bin:/usr/local/Cellar/postgresql@9.6/9.6.16/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/abc/bin:/usr/local/opt/rabbitmq/sbin
SHLVL=1
PYTHONPATH=
LANGUAGE=en_US.UTF-8
port=
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
CPPFLAGS=-I/usr/local/opt/openssl@1.1/include
LDFLAGS=-L/usr/local/opt/openssl@1.1/lib
CFLAGS=-I/usr/local/opt/openssl@1.1/include
LANG=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
_=/usr/bin/env
编辑 3
在推荐尝试之前请先阅读this聊天,因为我可能已经尝试过了。聊天从Apr 29 02:01 UTC +5 开始,然后转到一个线程。
编辑 4
设置PYENV_DEBUG=1后,这里输出
(vmds) saadali@A006-00276 ~ :~$ pyenv
+ [:22] enable -f /../libexec/pyenv-realpath.dylib realpath
+ [:29] [ -z '' ']'
+ [:31] READLINK=+ [:31] type -p greadlink readlink
+ [:31] READLINK=+ [:31] head -1
+ [:31] READLINK='greadlink not found'
+ [:32] [ -n 'greadlink not found' ']'
+ [:57] [ -z '' ']'
+ [:58] PYENV_ROOT=/Users/abc/.pyenv
+ [:62] export PYENV_ROOT
+ [:65] [ -z '' ']'
+ [:66] [ -n '' ']'
+ [:82] [ -z '' ']'
+ [:83] PYENV_DIR=/Users/abc
+ [:86] [ ! -d /Users/abc ']'
+ [:86] [ ! -e /Users/abc ']'
+ [:90] PYENV_DIR=+ [:90] cd /Users/abc
+ [:90] echo /Users/abc
+ [:90] PYENV_DIR=/Users/abc
+ [:91] export PYENV_DIR
+ [:94] shopt -s nullglob
/usr/local/bin/pyenv:94: command not found: shopt
【问题讨论】:
-
/usr/local/bin/pyenv的第一行是什么? -
which shopt的输出是什么? -
运行
env并将其输出添加到您的问题中 -
@MarkSetchell 第一行是
#!/usr/bin/env bash但这个问题也发生在 bash 终端中。 -
@con--
shopt是一个内部的bash命令,在zsh的which shopt的输出上当然找不到命令,在bash终端上它什么也不返回,因为它不是一个命令,但如果我做简单的shopt,它会显示一些与shopt相关的东西。
标签: python macos zsh zshrc pyenv