使用 Homebrew 升级 python 后出现“库未加载”错误

ESo*_*Luo 6 python homebrew virtualenv pipenv

我使用 pipenv 像这样创建 virtualenv

pipenv --python /usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)

用 Homebrew 升级 python 后,比如 python 3.7.2 到 3.7.3,用 激活 virtualenv 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
Run Code Online (Sandbox Code Playgroud)

我所知道的一切/usr/local/bin/python3仍然存在,在系统级别运行 python 是好的。只有在 virtualenv 中调用 python 才会出错。

现在我已经删除了 virtualenvs 并再次使用 pipenv 创建它,它将解决这个问题。但是做这些事情会丢失所有的pip包,所以我需要重新安装它们。

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

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

提前致谢。

Ger*_*iet 8

我有同样的问题。缺少的库是.Python哪个链接位于虚拟环境的顶层(在您的情况下/Users/xxx/.local/share/virtualenvs/xxx-xxx)。如果你去那里,ls -l .Python你可以看到它指向一个特定的自制 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

  • 谢谢。其他人都说对你的 venv 进行核攻击,并在 venv 内运行 brew 后重新开始。这为我解决了这个问题。 (2认同)