这个烧瓶错误是什么意思? /usr/local/bin/flask: 错误的解释器: /usr/local/opt/python/bin/python2.7: 没有那个文件或目录

What does this flask error mean? /usr/local/bin/flask: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory

我可以看出 Flask 正在尝试使用 python2.7 作为解释器,但我不明白为什么。我用 python3 -m venv venv 创建了一个 virtualenv,安装了 flask,并尝试 运行 一个应用程序。我按预期在我的 venv 中看到 python3.6,所以我只是不明白使用 python2.7 的尝试来自何处。我认为这与我的路径有关,但我发现每当我需要在 2 和 3 之间切换时,我需要更改我的路径,不可避免地破坏另一个版本。

来自其他语言,"isolated" venvs 的承诺似乎从来没有像预期的那样工作,因为我经常发现 python 2 和 3 不可分割地混淆。有没有办法获得绝对的python 2或3环境?

您过去曾经安装过带有 Python 2.7 的 Flask,但该脚本指向一个不再安装的 Python 版本。

鉴于涉及的路径是 /usr/local/bin/usr/local/opt/python/bin/python2.7,我猜你在这里使用 OS X 并安装了 Homebrew。 Homebrew 在最近将 python 公式从 Python 2 切换为 Python 3,您可能在此之前使用 Python 2 pip 命令安装了 Flask改变。您应该能够完全删除 /usr/local/bin/flask 脚本,它现在已过时且损坏。

你也没有激活你的virtualenv。您没有,但在您这样做之前,bin/ 目录和 flask 脚本的正确版本也将不可用。激活 virtualenv 后,您的 PATH 环境变量将更新为首先包含 bin/ 目录,方法是将其包含在 PATH 值的前面。

通过使用 virtualenv bin/ 目录的路径来限定要使用的 flask 脚本,或者正确激活 virtualenv。

您可以通过

检查您的 virtualenv 是否处于活动状态
echo $VIRTUAL_ENV

这应该会打印出你的 virtualenv 的路径。您还可以验证 PATH 是否设置正确; echo $PATH 应该将 virtualenv .../bin/ 目录显示为第一个条目。如果未激活,请通过 运行ning

激活它
source bin/activate

在virtualenv根目录下。

您可以 运行 使用

正确的 flask 命令
path/to/venv/bin/flask