zsh: /usr/local/bin/pipenv: 坏的解释器: /usr/local/opt/python/bin/python3.7: 没有那个文件或目录。

16

我最近从bash切换到zsh(MacOS)。 自从切换后,我就没有使用pipenv。 现在当我运行任何pipenv命令时,我都会收到以下错误消息:

$ pipenv install
zsh: /usr/local/bin/pipenv: bad interpreter: /usr/local/opt/python/bin/python3.7: no such file or directory

我使用pyenv来管理Python依赖:

$ which python
/Users/ryan.payne/.pyenv/shims/python

我默认的Python版本是3.7.3:

$ pyenv versions
  system
  2.7.16
  3.6.8
* 3.7.3 (set by /Users/ryan.payne/.pyenv/version)

看起来pipenv没有使用我pyenv安装的Python版本。我该如何使pipenv再次工作?


1
"Bad interpreter" 的意思就是字面上的意思。检查第一行失败的脚本的 "shebang" -- 指定要用于运行该脚本的解释器。确保 shebang 指向一个实际存在的解释器。 - Charles Duffy
4
如果您希望它遍历路径以找到要使用的python副本(从而使用与which找到的相同副本),则需要以 #!/usr/bin/env python 开头;而现在它可能以 #!/usr/local/opt/python/bin/python3.7 开头,错误消息表明该副本不存在或缺少运行时依赖项。 - Charles Duffy
你没有提到你使用的操作系统。是MacOS吗? - Alex Yu
@AlexYu 是的,这是一个MacOS系统。我已经相应地更新了我的问题。 - Ryan Payne
5个回答

14

不需要卸载任何东西。只需更改/usr/local/bin下的解释器,并在使用pyenv时保留当前Python路径:

type python3

复制该路径

vi /usr/local/bin/pipenv

它看起来可能像这样:

enter image description here

修改后,您可能需要重新下载pipenv。别担心,您的环境没有问题。

pip install pipenv

尽情享受你的环境吧!


在 Mac 上进行 brew upgrade 后,我也遇到了 black 的相同问题。类似的步骤对我也起作用了。谢谢。 - A D

9

我曾在使用 awscli 时遇到同样的错误。解决方案是通过homebrew安装python@3.7,然后将该安装文件夹cpawscli预期的目录中。

brew install python@3.7
cp -r /usr/local/opt/python@3.7/bin/python3.7 /usr/local/opt/python/bin/python3.7

4

如果您使用pipx安装了pipenv,则可以通过pipx reinstall pipenv重新安装pipenv,这将检测您的Python环境中是否存在任何顶级更改。


2

在终端中运行:

brew install python3 && cp /usr/local/bin/python3 /usr/local/bin/python

1
安装brew后,有时可能无法正常工作。这取决于您是否尝试安装其他Python版本,链接可能不再起作用,因此无法运行命令。
brew install python3 && cp /usr/local/bin/python3 /usr/local/bin/python

可能会出现以下错误。
Error: Could not symlink bin/2to3
Target /usr/local/bin/2to3
already exists.

尝试删除文件2to3。
rm '/usr/local/bin/2to3'

然后再次运行上述代码。 或者,您可以强制链接。

brew link --overwrite python@<version>

但您可以使用以下命令预览将被此强制链接删除的文件:


brew link --overwrite --dry-run python@<version>

我希望这能给更多的启示。

我已经安装了Python3,所以我只需要运行这个命令就可以了:cp /usr/local/bin/python3 /usr/local/bin/python。 - Tomas.R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接