Intel macOS Big Sur 上的 Homebrew pip 问题 5599

Intel macOS Big Sur 上的 Homebrew pip 问题 5599

(我是新来的,所以请温柔一点)

使用时顶级在 2020 年英特尔 13 英寸默认高配 MacBook Pro 上的 macOS big sur 上的homebrew 中(我使用 安装 homebrew 后安装了 topgrade brew install topgrade),我遇到了以下问题:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

在网上寻找解决方案时,我发现本文

我按照建议运行xcode-select --install并随后重新启动。

再次运行 topgrade 后,我开始有点怀疑,因为上面写着:

    ...
Successfully installed pip-21.1.1
    WARNING: You are using pip version 19.2.3, however version 21.1.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    ...

但我觉得它好像是自己更新的。所以我再次运行了 topgrade,它说

WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Requirement already satisfied: pip in ./Library/Python/3.8/lib/python/site-packages (21.1.1)

从那时起,我得到的答案一直是一样的。我点击了链接,但除了 Python 解决方法之外没有找到其他解决方案,这似乎是一个短期解决方案。

据我所知,pip 版本有 19.2.3 和 21.1.1,需要删除旧版本吗?但我该怎么做呢?这是否Requirement already satisfied: pip in ./Library/Python/3.8/lib/python/site-packages (21.1.1)意味着它已经自行修复了?如果我忽略这个问题会发生什么?

如果有人能帮助我,我将不胜感激。虽然我热爱科技,但我对编程毫无经验,这对我来说简直是太难了。非常感谢你!

编辑:我执行了给出的建议这里并得到以下结果:

which -a python python2 python2.7 python3 python3.6

显示

/usr/bin/python
/usr/bin/python2
/usr/bin/python2.7
/usr/bin/python3

打字python并点击 tab (相当于compgen -c python)给了我

python            python2           python2.7-config  pythonw
python-config     python2.7         python3           pythonw2.7

locate python在建立数据库后运行就像描述的一样给了我一份很长的清单,这里放不下。

新问题:我不太明白我应该采取什么措施这里跑步前python -m pip,但无论我是否执行这些步骤,我都看不出有什么区别。我可以python -m pip在不知道会发生什么的情况下跑步吗?

第二次编辑

python -m pip --version 给出/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: No module named pip

python3 -m pip --version 给出 pip 21.1.1 from /Users/MyName/Library/Python/3.8/lib/python/site-packages/pip (python 3.8)

关于第二条python -V评论 Python 2.7.16

python3 -V给出 Python 3.8.2

也很抱歉已经有一段时间了,但是我们现在有考试,所以我有点忙。

答案1

重要的是:

弄清楚您想要使用的 Python 安装,确保它是您在提示符python下输入时获得的安装,并确保pip您在输入时获得的pip指向同一个安装。

Apple 正在逐步放弃默认安装包括 Python 在内的脚本语言,但目前为止它们仍带有一个默认安装脚本语言的选项 - 如果不关闭系统完整性保护,则您无权升级。因此,通常的建议“保持系统安装升级”在 Mac 上更难实现。

当您安装 Xcode 时,您会获得一个完全不同的版本,并且它python根本不提供二进制文件,只有一个名为的python3

我的建议是使用 Homebrew 安装 python,这样你就可以完全控制它,但它也不提供python,至少没有默认链接。你必须自己建立链接。但我认为你应该 - 将所有 3-less Homebrew python 二进制文件符号链接到 /usr/local/bin; 并/usr/local/bin在任何其他系统类型位置之前将其放入你的 PATH 中。

因此,基本上这些步骤是:

brew install python
ln -s /usr/local/opt/python/libexec/bin/* /usr/local/bin
/usr/local/bin/python -mpip install --upgrade pip

然后在您的 shell 启动文件 (~/.bash_profile 或 ~/.zprofile 或 ~/.bashrc 或 ~/.zshrc) 中确保 /usr/local/bin 在您的 PATH 中排在第一位,如下所示:

PATH=/usr/local/bin:${PATH#/usr/local/bin:}

然后退出你的shell并启动一个新的,然后你就可以开始了。

答案2

一些想法:

据我所知,pip 有两个版本 19.2.3 和 21.1.1,需要删除旧版本吗?

至于删除,则不一定。虽然在 Linux 上更是如此,但 Python 通常与 *nix 风格的系统紧密集成。干扰 Python 的默认系统安装(理论上)可能会导致关键系统软件出现故障(最明显的通常是程序包管理器,而不是在后台运行 Python)。

我怎么做?

假设旧版本是系统默认 Python 安装的一部分,理想情况下您不应该这样做。无论如何,最好使用任何内置系统工具或采取其他适当步骤升级到正确软件 (Python/ pip) 的最新版本。对此有争议的例外是任何虚拟环境或 Python 应用程序都需要安装特定版本的 Python 或任何相关软件包。

值得一提的是,虽然 pip 19.2.3 可以与 Python 2 或 Python 3 一起使用,但 pip 20.3 是最后一个具有.whl支持 Python 2 的(Python 预构建安装文件)的版本。pip 21.0+ 完全针对 Python 3。pip 发行历史可查看这里

我跟着链接但除了 Python 解决方法之外没有找到其他解决方案,这似乎是一个短期解决方案。

该页面上的基本建议很实用,只要您遵循,它们将帮助您避免问题。您应该仔细阅读。

请注意,使用 作为一种解决方法的说法python -m pip有些误导。这种形式通常是使用 的最佳方式pip,与您遇到的问题无关。它不一定能让您完全摆脱麻烦,但一般来说,pip单独使用 通常是不可取的。

这是否Requirement already satisfied: pip in ./Library/Python/3.8/lib/python/site-packages (21.1.1)意味着它已经自行修复了?

这可能意味着您pip在该 Python 安装中安装了最新版本的 ( ./Library/Python/3.8) 或它所指的任何内容。要真正找出答案,您可能需要检查多个 Python 安装(建议参阅此Stack Overflow 问题也许有一些关于如何做到这一点的想法),然后检查每个安装的版本pip

请注意,据我所知,Xcode 安装了自己的 Python 3 副本(默认python3pip3),它与 MacOS 过去默认使用的 Python 2 安装(通常pythonpip)是分开的。

如果我忽略这个问题会发生什么?

您的计算机将会崩溃,屏幕变成《黑客帝国》中的“下落代码”,然后您的系统将会自发爆炸。;)

不过,说实话,很遗憾我没有答案给你。你应该根据上面建议的测试结果来编辑你的问题,这样可能会让你更好地了解正在发生的事情。

相关内容