如何解决"zsh: command not found: python" 错误?(macOS Monterey 12.3, Python 3.10, Atom IDE, 和atom-python-run 0.9.7)

回答 14 浏览 14.9万 2022-03-23

自从我得到macOS v12.3 (Monterey)更新后(虽然不确定是否有关系),当我试图在终端运行我的Python代码时,我一直得到这个错误。

Python not found error

我使用Python 3.10.3,Atom IDE,并通过atom-python-run包在终端运行代码(以前运行得很好)。该包的设置是这样的。

atom-python-run-settings

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

Which Python

我认为错误的发生是因为终端调用python而不是python3,但我对任何编码都是超级新手,不知道为什么现在开始,也不知道如何解决。这些东西对我都不起作用。

  • 我删除了Python.org上的Python解释器,然后重新安装了它。
  • 我试了一下alias python='python3'(我在这里的一个主题中看到过)。
  • 我试了一下export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"(我在这里找到了)。
  • 为了重置zsh和路径,我删除了/local/users/中所有相关的隐藏文件,并再次运行了终端。
  • 我删除了所有的东西,重新安装了Mac OS X和Python解释器,但得到的却是同样的错误。
Kig 提问于2022-03-23
请查看 为什么不在提问时上传代码/错误的图片?(例如,"图片只能用于说明 不能以任何其他方式说明的问题, 例如提供用户界面的截图。")并采取适当的行动(它也包括终端输出)。Peter Mortensen 2022-06-26
14 个回答
#1楼
得票数 211

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

其原因是苹果公司删除了系统提供的Python 2的安装(details)。

所以一个变通/解决方案是使用pyenv来安装Python 2.7 (或你需要的任何其他特定版本)。

  1. pyenvbrew一起安装,以管理不同的Python版本。brew install pyenv
  2. pyenv install --list列出所有可安装的版本
  3. 安装带有pyenv install 2.7.18的Python 2.7.18。
  4. pyenv versions列出已安装的版本
  5. pyenv global 2.7.18来设置全局的Python版本
  6. eval "$(pyenv init --path)"加到~/.zprofile(或~/.bash_profile~/.zshrc,以你所需要的为准)。
  7. 重新启动shell并检查Python是否工作,或者运行$ source ~/.zprofile (Thanks masoud soroush!)
Bernd Kampl 提问于2022-03-29
Bernd Kampl 修改于2022-08-04
如果目标是让Python 2在Mac OS Monterey上工作,这应该是一个公认的答案。moveson 2022-05-04
为什么所有的答案都指向homebrew? 我最近迁移到pyenv+pipenv,只使用macports进行管理,我遇到了类似的错误。在大多数情况下,用户$PATH被搞砸了。Kambiz 2022-06-03
对我来说不起作用。只是同样的错误。无法想象为什么。surfrider 2022-07-18
@Surfrider 你有没有把它添加到PATH中,并重新启动你的终端?Bernd Kampl 2022-07-18
都是按部就班地做的。surfrider 2022-07-18
#2楼 已采纳
得票数 66

好了,经过几天的尝试,这就是对我有用的方法。

  1. 我重新安装了Monterey(不确定它是否必要,但我只是想,我把终端和$PATH搞得太乱了)。
  2. 我通过brew而不是从官方网站上安装了python。 它仍然会返回command not found的错误。
  3. 我在终端运行了echo "alias python=/usr/bin/python3" >> ~/.zshrc,用python3来别名python

问题解决了。

据我所知,从12.3开始,macOS中已经没有预装的python 2.x了,因此出现了错误。不过我还是觉得很奇怪,尽管有设置,但atom-python-run会调用python而不是python3

Kig 提问于2022-03-25
在某些情况下,你正在使用的程序并不能查到你的~/.zshrc。在我的情况下,更便携的解决方案是运行ln -s /opt/homebrew/bin/python3 /usr/local/bin/python,它不依赖于zsh。Ava 2022-05-02
echo "alias python=/usr/bin/python3" >> ~/.zshrc是正确的命令,所以它在~/.zshrc文件中的前一个内容之前追加了一个新的行。Alex Arvanitidis 2022-08-11
例如,如果你使用 Pyenv 安装 Python 3.x,就不需要定义别名。请看我的回答 stackoverflow.com/a/73772425/505650 以了解一个可行的解决方案。Jarno Lamberg 2022-09-19
可以使用,但在我的情况下,路径是/usr/local/bin/python3Robin 2022-11-04
如果你用的是苹果硅,请看我的回答。stackoverflow.com/a/74356785/12794085 Brew不会将酒桶安装到你所指向的目录中。berkaykurkcu 2022-11-08
#3楼
得票数 30

如果你只是简单地安装了Python 3,只需使用python3作为命令,而不是只使用python。在我的例子中,我不得不先通过Homebrew(可执行的brew)用brew install pyenv安装pynev

但在使用pynev安装Python 2.7.18并使用pyenv global 2.7.18将其设置为全局版本后,我在试图运行python时仍然遇到了一个错误。

对我有用的是(因为我已经安装了Python 3),通过改变我的命令来使用python3,而不只是python。当然,这对每个可能想使用Python 2的人来说不是一个解决方案。

Alvin 提问于2022-04-13
Peter Mortensen 修改于2022-06-26
谢谢你,在Python后面加上3,使命令生效了!我想知道为什么会这样?我想知道为什么会这样......谁能解释一下?MikhailRatner 2022-06-29
我怎么能只用python作为一个命令呢,这看起来要简单得多。Subhan Ahmed 2022-07-30
看来你可以使用别名(不过有一些注意事项),@SubhanAhmed 查阅。askubuntu.com/questions/320996/…Alvin 2022-07-31
你的评论只解决了两个问题中的一个。安装一个合适的python版本并从终端调用的问题已经在最早的一个答案中得到了解决。我现在剩下的问题是,为什么atom-python-run一直在调用python,而不是python3,尽管有设置。请确保你在投稿前阅读了问题和已接受的答案。Kig 2022-08-04
#4楼
得票数 10

我刚刚在装有macOS Monterey的新Macbook Pro上遇到了这个问题,下面的方法在我使用Homebrew的情况下起了作用。

在使用Pyenv时,使用alias是不必要的。用Atom 1.60.0和atom-python-run 0.9.7测试。

  1. 安装pyenv (https://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
    
  2. 安装Python 3.10.6,但我认为其他3.x版本应该也能工作。

    pyenv install 3.10.6
    
  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
    
  4. 使已安装的 Python 在任何地方都可用 (如果需要,可以在每个项目或文件夹中重写这一点)。

    pyenv global 3.10.6
    

现在,输出结果看起来是这样的。

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

% python --version
Python 3.10.6

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

Jarno Lamberg 提问于2022-09-19
Jarno Lamberg 修改于2022-09-19
每次我试图运行pyenv install 3.10.6时,都会被提示安装XCode开发者工具,而XCode已经安装了。它说"'clang'命令需要命令行开发工具。"终端中的错误说。make: error: sh -c '/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk '' -find make 2> /dev/null' failed with exit code 34304: (null) (errno=No such file or directory) 我在Monterey上。Corey 2022-09-30
我也失败了 % pyenv install 3.10.7 python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.10.7.tar.xz.-> python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz 安装Python-3.10.7... python-build: use tcl-tk from homebrew python-build: use readline from homebrew python-build: use zlib from xcode sdk BUILD FAILED(OS X 12.6 using python-build 20180424) Inspect or clean up the working tree at /var/folders/7s/rdl105q14k5b9d7cqc9l1gsr0000gn/T/python-build.20221010101606.15912 结果被记录到/var/foldeJayden Lawson 2022-10-10
@Corey 即使已经安装了XCode开发工具,如果你运行下面的命令,然后尝试重新安装Python版本,错误信息是否会消失?xcode-select --installJarno Lamberg 2022-10-10
@JaydenLawson 与我之前对Corey的评论一样:这对你来说有用吗?Jarno Lamberg 2022-10-10
你可能需要重新启动你的终端,才能看到变化。Tom J 2022-11-05
#5楼
得票数 5

我安装了Python,然后发生了这个错误,我只是运行了一下

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

我在macOS Monterey 12.4,Python 3.8.9上工作了。

yetesfa 提问于2022-07-10
这在我的Mac Montery 12.4上运行得非常好。Hong 2022-08-02
#6楼
得票数 5

你应该尝试一下

sudo ln -s /usr/bin/python3 /usr/local/bin/python

解决了我的问题:)。

eddie a 提问于2022-07-24
#7楼
得票数 5

由于你安装了python3.9>(https://python.org/downloads/),你只需要用python3而不是python来运行一切。你不必为了使用它而降级你的python...用3作为python的后缀也能正常工作,i.e. python3,例如:$ which python3python3 --version$ python3 script.py等。

ewuraba 提问于2022-08-03
ewuraba 修改于2022-08-03
你的评论只解决了2个问题中的一个(而且仍然没有带来任何问题,因为你不是这个主题中第一个建议这样做的人)。安装一个合适的python版本并从终端调用它的问题已经在最早的一个答案中得到解决。我现在剩下的问题是,为什么atom-python-run一直在调用python而不是python3,尽管有设置。请确保你在投稿前阅读了问题和已接受的答案。Kig 2022-08-04
@Kig请务必阅读如何提问,并将问题集中在一个具体问题上。这里的问题不应该一开始就提出多个问题...Tomerikoo 2022-08-06
这并不提供问题的答案。一旦你有足够的声誉,你就可以对任何帖子进行评论;相反,提供不需要提问者澄清的答案。- 来自评论Dan Alexander 2022-08-09
#8楼
得票数 2

如果你已经安装了Python 3,请试着用python3 --version命令。

Ravindu Perera 提问于2022-09-15
#9楼
得票数 1

适用于3.10.8版本

用brew命令安装Python

brew install python@3.10

如果你有.zshrc文件,只需像这样编辑

alias python='python3'

alias pip ='pip'

导出 PATH="/opt/homebrew/opt/python@3.10/libexec/bin:$PATH"

如果你没有.zshrc文件,那么你可以使用.zshrc文件。

cd

vi .zshrc

并复制/粘贴下面这一行

alias python='python3'

alias pip ='pip'

export PATH="/opt/homebrew/opt/python@3.10/libexec/bin:$PATH"

billyboo 提问于2022-10-20
billyboo 修改于2022-10-20
正如目前所写,您的答案尚不清楚。请编辑添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到更多关于如何写好答案的信息。Community 2022-10-23
#10楼
得票数 0

在使用https://www.python.org/ftp/python/3.10.4/python-3.10.4-macos11.pkg安装后,我得到了zsh: Command not found python

我通过配置ENVIRONMENT解决了这个问题。我在.zshrc文件中添加了一行,alias python=/usr/local/bin/python3.10,(你必须确定它是真实的路径)。


我的macOS(Apple silicon)。

Darwin Johns-MacBook-Pro.local 21.4.0 Darwin Kernel Version 21.4.0: Mon Feb 21 20:35:58 PST 2022; root:xnu-8020.101.4~2/RELEASE_ARM64_T6000 arm64

CheverJohn 提问于2022-04-05
Peter Mortensen 修改于2022-06-26
什么是"ENVIRONMENT"?你是指"环境"吗?我们这里有italicsbold,以及许多其他格式选项。Peter Mortensen 2022-06-26
@PeterMortensen 我的意思是,你只要在.zshrc文件中加入'alias python=/usr/local/bin/python3.10`。这就是全部。CheverJohn 2022-06-27
#11楼
得票数 0

alias python=/usr/bin/python3

这个命令是有效的,但每当我们重新启动终端时,需要重新输入。

AK Optimistic 提问于2022-08-27
#12楼
得票数 0

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

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

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

berkaykurkcu 提问于2022-11-08
berkaykurkcu 修改于2022-11-08
#13楼
得票数 -1

我有一台MacBook Pro,装有苹果M1芯片和macOS v12.4(Monterey)。

  • 我删除了所有的Python版本,并清除了垃圾桶。
  • 打开终端,键入"python"。
  • 这促使我们对xcode.app进行了更新
  • 然后我从python.org上下载了最新版本的Python(2.10.5版)。
  • 安装了该版本
  • 退出终端机
  • 已开通的终端机
  • 输入了"Python3"。

现在看来,它在那里是好的。

Stuart 提问于2022-06-20
Peter Mortensen 修改于2022-06-26
#14楼
得票数 -1

我使用brew install brew install python@3.9,安装成功后,我想知道python的版本,我运行命令python --version,我得到的问题是zsh: command not found: python

如果你安装成功,请在终端检查。它将显示你的安装是否有问题,如果没有问题,你只需将命令从python --version改为python3 --version

pheaktra kim 提问于2022-07-21
Adriaan 修改于2022-07-21
你的评论只解决了2个问题中的一个(而且仍然没有带来任何问题,因为你不是这个主题中第一个建议这样做的人)。安装一个合适的python版本并从终端调用它的问题已经在最早的一个答案中得到解决。现在我剩下的问题是,尽管设置了python,但为什么atom-python-run总是调用python而不是python3。请确保你在投稿前阅读了问题和已接受的答案。Kig 2022-08-04