(我是新来的,所以请温柔一点)
使用时顶级在 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 副本(默认python3
,pip3
),它与 MacOS 过去默认使用的 Python 2 安装(通常python
,pip
)是分开的。
如果我忽略这个问题会发生什么?
您的计算机将会崩溃,屏幕变成《黑客帝国》中的“下落代码”,然后您的系统将会自发爆炸。;)
不过,说实话,很遗憾我没有答案给你。你应该根据上面建议的测试结果来编辑你的问题,这样可能会让你更好地了解正在发生的事情。