Homebrew brew doctor 关于 /Library/Frameworks/Python.framework 的警告,即使安装了 brew 的 Python

Posted

技术标签:

【中文标题】Homebrew brew doctor 关于 /Library/Frameworks/Python.framework 的警告,即使安装了 brew 的 Python【英文标题】:Homebrew brew doctor warning about /Library/Frameworks/Python.framework, even with brew's Python installed 【发布时间】:2014-04-10 22:11:01 【问题描述】:

当我运行 Homebrew's brew doctor (Mac OS X 10.9.2) 时,我收到以下警告消息:

警告:Python 安装在 /Library/Frameworks/Python.framework

Homebrew 仅支持针对系统提供的 Python 或 酿造的 Python。特别是,安装到 /Library 的 Python 可以 干扰其他软件安装。

因此,我运行 brew install 并按照安装警告输出中提供的步骤安装 Homebrew 的 Python 版本。运行 which python 确认 Homebrew 的版本确实在我的 PATH 的顶部。输出为/usr/local/bin/python

尽管如此,当我重新运行brew doctor 时,我仍然收到相同的警告消息。如何抑制此警告?我需要从我的计算机中删除 /Library/Frameworks/Python.framework 目录吗?我只是应该忽略它吗?我的计算机上是否有其他应用程序可能导致发出此警告?

请注意,由于来自brew doctor 的警告,我没有任何应用程序特别会遇到错误。另请注意,当我运行brew doctor 时,此警告消息并不总是打印出来,它是最近开始出现的。另外,我在我的电脑上使用 Python 2.7,试图远离 Python 3。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。当我通过 Homebrew 升级 python3 时,我开始得到这个:

-bash: python3: command not found

我与安装在/Library/Framework/Python.framework 中的Python 有同样的冲突。我刚刚做了一个brew link overwrite,现在一切正常。在 /Library/Framework/Python.framework here 中有一些关于如何处理 Python 版本的信息。

我想您可以按照链接的建议尝试删除该版本,只要确保该版本未被使用即可。当我进入 Python.framework 目录时,我看到了一些 EPD 版本的 Python,我认为这是 Enthought。您可以删除它,但如果除了难看的 Homebrew 警告消息之外它没有给您带来任何问题,那么我认为您现在应该忽略它。

更新:

我确实删除了 Python.framework 目录,通过在该目录中四处寻找,我开始看到一些我没有使用 Homebrew 安装的旧版本的 Python。一个来自 Enthought,另一个是 Python3.3 的发行版。我认为框架目录中的一些安装是用户安装。我在我的系统上安装了 R,还有一个 R.framework 目录,所以我认为其中大部分是用户安装。删除目录后,我只需要调用 brew prune 即可删除旧的符号链接。我检查了 python 2.7.6 和 3.3.4 的两个 brew 版本,它们似乎与我安装的所有软件包都处于良好的工作状态。我想我将删除该目录或 python 版本的决定留给您自行决定。

【讨论】:

在我的 el capitan 笔记本电脑上,/Library/... 处的 Python 版本是实际使用的版本,并且与 /usr/local/bin/python/usr/local/bin/python3 符号链接。所以在删除它们之前一定要看看你是如何设置的。 在哪里可以访问这个 /Library 目录?【参考方案2】:

我也收到了这条消息。

某些东西,有时会安装

/Library/Frameworks/Python.framework

在我的机器上(文件夹日期大约是 4 年前)。

我已选择删除它。

请注意,Apple 提供的框架位于

/System/Library/Frameworks/Python.framework/

【讨论】:

【参考方案3】:

根据this thread,输入以下命令:

sudo rm -rf /Library/Frameworks/Python.framework

因为您的计算机上安装了多个 Python,而这将删除可能在将来导致其他问题的一个。

【讨论】:

将 Python.framework 目录移动到其他名称,如 Python.framework.old 是一种不那么激进的方法。这样,如果有人出错,您可以将目录放回原处。 这不是一个好的解决方案,因为许多应用程序都使用系统级 Python。 @jmcmahon443 这不是系统 Python,它是您在自制软件之外安装的。【参考方案4】:

手动删除目录可能是一场噩梦,但幸运的是“brew”可以解决这个问题。完成删除后,输入以下内容:

brew doctor

上述命令将列出损坏的系统链接。为了摆脱这些损坏的符号链接,请输入:

brew prune

再次检查“brew doctor”以确保没有损坏链接。然后您的系统就可以开始冲泡了。

【讨论】:

brew prune 现已弃用,应改用brew cleanup【参考方案5】:

您可以按照我在下面的说明使用此解决方案

sudo rm -rf /Library/Frameworks/Python.framework

brew doctor 

brew prune

brew update

该组合为我修复了它,即使认为此错误通常不会导致任何重大问题,只是看到它们在 brew doctor 下弹出让我很恼火

【讨论】:

【参考方案6】:

我从 Homebrew 安装了 Python 3,然后直接从 Python 网站安装了另一个 Python 3。

我删除了/Library/Frameworks/Python.framework。我没有在.bash_profile 中添加任何PATHPYTHONPATH 变量。然后我在shell中检查了以下内容:

~$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

~$ python3
Python 3.6.4 (default, Mar  9 2018, 23:15:12)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

~$

此外,我检查了以下内容:

~$ whereis python
/usr/bin/python

~$ whereis python3

~$ which python
/usr/bin/python

~$ which python3
/usr/local/bin/python3

~$ which pip
/usr/local/bin/pip

~$ which pip3
/usr/local/bin/pip3

~$ whereis pip

~$ whereis pip3

我有点担心whereis python3whereis pipwhereis pip3 什么都没有返回,但是由于启动 Python 没有问题,我认为删除 /Library/Frameworks/Python.framework 是安全的。一个月后再问我。

【讨论】:

以上是关于Homebrew brew doctor 关于 /Library/Frameworks/Python.framework 的警告,即使安装了 brew 的 Python的主要内容,如果未能解决你的问题,请参考以下文章

Brew Doctor 说:“警告:/usr/local/include 不可写。”

Appium 环境搭建 - macOS

Homebrew 安装mysql

运行 Brew Doctor 时的主要警告

Homebrew-macOS缺失的软件包管理器(简称brew)

brew doctor 说“错误:/usr/bin 发生在 /usr/local/bin 之前”如何解决?