自制 python@3.8 更新后重新安装 python 包

wis*_*124 5 macos homebrew python-3.x

我最近通过自制软件将python更新为python@3.8

然后我注意到我的 python 脚本无法链接到我之前用 pip 安装的全局 python 包(全局安装的包,而不是在虚拟环境中)。

这让我陷入了理解如何在 macos 上设置 python 的兔子洞,我有几个问题。

  1. 由自制软件安装的 pip 现在将安装/usr/local/lib/python3.8/site-packages 中的所有软件包。

    • 这是否意味着我需要重新安装所有曾经(现在仍然存在)在/usr/local/lib/python3.7 中的python 包?之后我应该删除后一个目录吗?(就此而言,我可以看到我还有一个/usr/local/lib/python3.6目录)
    • 当下一个 python 更新出现时,将来管理它的有效方法是什么?每个项目的虚拟环境(我对虚拟环境的使用不是很熟悉)?
  2. 当我运行时, brew list | grep python我得到以下列表

python
python3
python@3.8
Run Code Online (Sandbox Code Playgroud)

我可以看到 python@3.8 被正确地符号链接为/usr/local/bin/python3但我不知道上面列表中的 python 和 python3 是什么,因为查看/usr/local/Cellar我可以看到我有一个空的/usr/local/Cellar/python目录和符号链接到它的/usr/local/Cellar/python3目录。我可以删除这两个文件夹吗?

  1. 最后,查看所有这些,我惊讶地发现/usr/bin 中有一个 python3 可执行文件。展望sys.path中当我执行的/ usr / bin中/ python3,我可以看到它的一些排序的Xcode安装蟒,因为它是寻找各种Xcode.app目录库。由于我的/usr/local/bin位于我的 PATH envt 变量的顶部,因此永远不会调用此 python3,但我想知道为什么我根本需要它以及我是否可以摆脱它。

我想很多这些问题的答案是使用虚拟环境,我奇迹般地避免这样做了这么长时间......不过希望得到一些帮助来理解上述内容。

编辑:运行brew info pythonbrew info python3返回相同的东西

python
python3
python@3.8
Run Code Online (Sandbox Code Playgroud)

ti7*_*ti7 2

我在运行 Python 3.9 的系统上遇到了类似的问题

我最初没有运行最终命令(仅运行--dry-run),因为一切看起来都很好,但按照安装过程中的建议,需要使用brew link来破坏和创建新的符号链接。

% brew link --overwrite --dry-run python@3.9
Would remove:
% brew link --overwrite python@3.9
Linking /usr/local/Cellar/python@3.9/3.9.1_1... 23 symlinks created
%
Run Code Online (Sandbox Code Playgroud)

正如MisterMiyagi在评论中所建议的,这是通过brew doctor

% brew link --overwrite --dry-run python@3.9
Would remove:
% brew link --overwrite python@3.9
Linking /usr/local/Cellar/python@3.9/3.9.1_1... 23 symlinks created
%
Run Code Online (Sandbox Code Playgroud)