【问题标题】:zsh: /usr/local/bin/pipenv: bad interpreter: /usr/local/opt/python/bin/python3.7: no such file or directoryzsh:/usr/local/bin/pipenv:错误的解释器:/usr/local/opt/python/bin/python3.7:没有这样的文件或目录
【发布时间】:2020-08-20 16:00:38
【问题描述】:

我最近从 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 再次工作?

【问题讨论】:

  • “错误的解释器”的意思正是它所说的。检查“shebang”失败的脚本的第一行 - 用于运行该脚本的解释器的规范。确保 shebang 指向实际存在的解释器。
  • ...如果您希望它遍历您的 PATH 以找到要使用的 python 的副本(因此,要使用与 which 找到的相同的副本),那么您需要它来启动与#!/usr/bin/env python;而现在它可能以#!/usr/local/opt/python/bin/python3.7 开头,错误消息表明它不存在或缺少运行时依赖项..
  • 你没有提到你正在使用的操作系统。是 MacOS 吗?
  • @AlexYu 是的,它是 MacOS。我已经相应地更新了我的问题。

标签: python macos zsh pipenv pyenv


【解决方案1】:

awscli 也出现了同样的错误。解决方案是通过 homebrew 安装 python@3.7,然后将 cp 安装到预期的目录 awscli 中。

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

【讨论】:

    【解决方案2】:

    您无需卸载任何东西。只需在 /usr/local/bin 处更改解释器,然后在 pyenv 中方便地使用您当前的 python 路径:

    type python3

    复制路径

    vi /usr/local/bin/pipenv

    它看起来像这样:

    一旦更改,您可能需要再次下载 pipenv。别担心,你的环境很好。

    pip install pipenv

    去你的环境玩

    【讨论】:

    • 在brew upgrade 之后,我在mac 上遇到了与black 相同的问题。类似的程序对我有用。谢谢
    【解决方案3】:

    在终端运行:

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

    【讨论】:

      【解决方案4】:

      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>
      

      我希望这能给你更多的光明

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-25
        • 1970-01-01
        • 2014-10-24
        • 2020-05-03
        • 2020-12-01
        • 2015-10-24
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多