如何修复“zsh:找不到命令:python”错误?(macOS Monterey 12.3、Python 3.10、Atom IDE 和atom-python-run 0.9.7)

Kir*_*yev 210 python macos terminal atom-editor macos-monterey

自从我有了macOS v12.3 (Monterey) 更新(虽然不确定它是否相关),当我尝试在终端中运行 Python 代码时,我一直收到此错误:

\n

Python 未找到错误

\n

我正在使用Python 3.10.3,Atom IDE,并通过atom-python-run包在终端中运行代码(以前运行得很好)。包的设置如下:

\n

原子 python 运行设置

\n

终端中的命令which返回以下内容(这很奇怪,因为早些时候它会返回一些东西which python

\n

哪种Python

\n

我收集发生错误是因为终端调用python而不是python3,但我对任何编码都非常陌生,并且不知道为什么它现在开始以及如何修复它。这些对我来说都不起作用:

\n
    \n
  • 我从 python.org 删除并重新安装了 Python 解释器。
  • \n
  • 我试过alias python=\'python3\'(我在这里的一个线程中看到了这一点)。
  • \n
  • 我尝试过export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"(我在这里找到找到的)。
  • \n
  • 为了重置 zsh 和路径,我删除了所有关联的隐藏文件/local/users/并再次运行终端。
  • \n
  • 我删除了所有内容并重新安装了 Mac\xc2\xa0OS\xc2\xa0X 和 Python 解释器,但还是出现了相同的错误。
  • \n
\n

Ber*_*mpl 397

任何将 macOS 更新到 Monterey 12.3 的人都会发现他们突然不再拥有系统提供的 Python 2。

\n

出现这种情况的原因是Apple删除了系统提供的Python 2安装(详情)。

\n

因此,解决方法/解决方案是使用pyenv安装 Python\xc2\xa02.7 (或您需要的任何其他特定版本)。

\n
    \n
  1. 安装pyenvbrew管理不同的Python版本:brew install pyenv
  2. \n
  3. 列出所有可安装的版本pyenv install --list
  4. \n
  5. 安装 Python 2.7.18pyenv install 2.7.18
  6. \n
  7. 列出已安装的版本pyenv versions
  8. \n
  9. 设置全局 python 版本pyenv global 2.7.18
  10. \n
  11. 添加eval "$(pyenv init --path)"~/.zprofile(或~/.bash_profile~/.zshrc,无论您需要什么)
  12. \n
  13. 重新启动 shell 并检查 Python 是否正常工作,或者运行$ source ~/.zprofile(感谢 masoud soroush!)
  14. \n
\n

  • 如果目标是让 Python 2 在 Mac OS Monterey 上运行,这应该是公认的答案 (17认同)
  • 为什么所有答案都会导致“自制”?我最近仅使用“macports”迁移到“pyenv”+“pipenv”进行管理,并且遇到了类似的错误。在大多数情况下,用户“$PATH”被搞砸了。 (2认同)

Kir*_*yev 137

好的,经过几天的尝试,这对我有用:

  1. 我重新安装了蒙特利(不确定它是否必要,但我只是认为我弄乱了终端并且$PATH太多了)。
  2. 我是python通过brew而不是从官方网站安装的。它仍然会返回command not found错误。
  3. echo "alias python=/usr/bin/python3" >> ~/.zshrc在终端中运行别名pythonpython3.

问题解决了。

据我了解,从 12.3 开始,macOS 中不再预装 python 2.x,因此出现错误。我仍然觉得很奇怪,尽管这atom-python-run需要python而不是python3尽管设置。

  • 在某些情况下,您正在使用的程序不会查看您的“~/.zshrc”。就我而言,更便携的解决方案是运行 ln -s /opt/homebrew/bin/python3 /usr/local/bin/python ,它不依赖于 zsh。 (33认同)
  • `echo "alias python=/usr/bin/python3" >> ~/.zshrc` 是正确的命令,因此它会在 ~/.zshrc 文件中的先前内容之前附加一个新行 (2认同)
  • 有效,但在我的情况下,路径是“/usr/local/bin/python3”。 (2认同)

小智 59

如果您只是安装了 Python\xc2\xa03,则只需使用python3as 命令,而不仅仅是python. 就我而言,我必须pynev首先通过Homebrew(可执行文件brew)安装brew install pyenv.

\n

但仍然在使用 pynev 安装 Python\xc2\xa02.7.18 并使用 将其设置为全局版本之后pyenv global 2.7.18,我在尝试运行时仍然遇到错误python

\n

对我有用的(因为我已经安装了 Python\xc2\xa03)是通过更改我的命令来使用python3而不是仅仅python. 当然,这并不是每个想要使用 Python 2 的人的解决方案。

\n

  • 谢谢,在“Python”后面添加“3”使命令起作用!我想知道为什么这是......有人解释一下吗? (2认同)

小智 43

你应该试试

\n
sudo ln -s /usr/bin/python3 /usr/local/bin/python\n
Run Code Online (Sandbox Code Playgroud)\n

解决我的问题\xef\xbc\x9a\xef\xbc\x89

\n

  • 这也解决了我的问题。使用来自 python.org 的 .pkg 安装 macOS 12.3、Python 3.11 (3认同)

Jar*_*erg 23

我刚刚在装有 macOS Monterey 的新 Macbook Pro 上遇到了这个问题,下面的内容对我使用 Homebrew 有效。

alias使用 Pyenv 时不需要使用。使用 Atom 1.60.0 和atom-python-run 0.9.7 进行测试。

  1. 安装pyenvhttps://github.com/pyenv/pyenv#installation)及其依赖项(https://github.com/pyenv/pyenv/wiki#suggested-build-environment):

    brew install pyenv
    brew install openssl readline sqlite3 xz zlib tcl-tk
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装 Python 3.10.6,但我认为其他 3.x 版本也应该可以工作:

    pyenv install 3.10.6
    
    Run Code Online (Sandbox Code Playgroud)
  3. 根据https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv中的说明将 Pyenv 添加到您的 shell 。在你的主目录中:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    echo 'eval "$(pyenv init -)"' >> ~/.zshrc
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使已安装的 Python 随处可用(如有必要,可以按项目或文件夹覆盖此设置):

    pyenv global 3.10.6
    
    Run Code Online (Sandbox Code Playgroud)

现在,输出如下所示:

% which python
/Users/jl/.pyenv/shims/python

% python --version
Python 3.10.6
Run Code Online (Sandbox Code Playgroud)

如果某些脚本仍然失败,请检查您是否已将 Pyenv 添加到必要的 shell 启动文件中,如上面步骤 3 中所述。


小智 16

python3 --version如果您已经安装了 Python 3,请尝试该命令。


ewu*_*aba 10

由于您安装了 python3.9> ( https://python.org/downloads/ ) ,您只需使用python3而不是运行所有内容python。你不必降级你的Python来使用它......它可以很好地使用带有3后缀的Python, python3例如。 $ which python3python3 --version$ python3 script.pyETC


小智 9

只需在终端中运行以下命令:

echo "alias python=/usr/bin/python3" >> ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

基本上,这里我们说的是把 python 当作 python3 对待的终端。
就像魔术一样!


ber*_*kcu 8

我在使用 Apple Silicon M1 Pro 芯片的新 MacOS Ventura 时也遇到了同样的问题。似乎在 Apple Silicon 上,brew 安装到了与以前不同的位置?

/usr/bin/文件夹中有一个 Python 可执行文件,其版本为 3.9.6。

所以我使用安装了Python brew,但随后我必须通过python3命令执行它,所以我运行echo "alias python=/opt/homebrew/bin/python3" >> ~/.zshrc并重新启动了我的终端。执行命令时,系统提示我所需的 Python 版本python


yet*_*sfa 7

我安装了Python,然后出现这个错误,我只是运行

echo "别名 python=/usr/bin/python3" >> ~/.zshrc

我在 macOS Monterey 12.4、Python 3.8.9 上工作过