Homebrew 升级 Python 后出现“未加载库”的错误

9
我使用pipenv来创建虚拟环境,步骤如下:
pipenv --python /usr/local/bin/python3

在使用Homebrew升级Python(例如从Python 3.7.2升级到3.7.3)后,使用pipenv shell激活虚拟环境,在执行任何Python相关的操作时都会出现错误,就像这样:

python3 --version
dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /Users/xxx/.local/share/virtualenvs/xxx-xxx/bin/python3
  Reason: image not found
[1]    60198 abort      python3 --version

我所知道的是 /usr/local/bin/python3 仍然存在,使用系统级别运行 Python 是正确的。只有在虚拟环境中调用 Python 才会出现问题。

目前,我已经删除了虚拟环境,并使用 pipenv 重新创建了它,这将解决此问题。 但是这样做会丢失所有安装的 pip 包,因此我需要重新安装它们。

那么,有没有一些聪明的方法来解决这个问题呢? 或者在 Homebrew 升级 Python 期间发生了什么问题?

也许这个问题看起来很愚蠢。但我已经困惑了很长时间了。

提前致谢。

1个回答

9

我遇到了相同的问题。缺失的库是.Python,它是虚拟环境顶层的链接(在你的情况下为/Users/xxx/.local/share/virtualenvs/xxx-xxx)。如果你进入该目录并执行 ls -l .Python,你会看到它指向一个特定的homebrew Cellar目录(在我的情况下为/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/Python)。这个目录可能被升级时删除了(使用 ls -l /usr/local/Cellar/python 查找新的目录/版本)。

移除这个链接并让它指向新的位置,例如对于我来说:ln -s /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/Python .Python


2
谢谢。其他人都建议在 venv 中运行 brew 后将其删除并重新开始。这对我有用。 - Oded

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接