我最近在我的Mac上安装了一堆dotfiles和其他一些应用程序(我把Terminal换成了iTerm, Sublime作为我的默认文本编辑器),但从那以后,我所有的虚拟环境都停止了工作,尽管它们的文件夹在.virtualenvs中仍然存在,每当我试图在其中运行任何东西时,它们都会给出以下错误:

dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /Users/[user]/.virtualenvs/modclass/bin/python
  Reason: image not found
Trace/BPT trap: 5

我已经删除了所有与dotfiles相关的文件,并将.bash_profile恢复到以前的状态,但问题仍然存在。有什么方法可以诊断问题或以一种简单的方式解决它(例如,不需要重新创建所有的virtualenv)?


当前回答

当你在新创建的virtualenv上遇到这个问题时,可能是你的python版本被“unlinked”了。

你可以通过运行:brew link python@3.8来解决这个问题 (但要指定特定的python版本)

你也可以运行brew doctor,它会告诉你,如果你有未链接的东西,以及如何修复这个。

其他回答

我(MacOS用户)的问题是,brew更新了Python和virtualenvs链接到旧版本,旧版本已被删除。

我们可以在

>> ls -al ~/.virtualenvs/<your-virtual-env>/.Python
.Python -> /usr/local/Cellar/python/<old-version>/Frameworks/Python.framework/Versions/3.7/Python
>> rm ~/.virtualenvs/<your-virtual-env>/.Python
>> ln -s  /usr/local/Cellar/python/<new-version>/Frameworks/Python.framework/Versions/3.7/Python ~/.virtualenvs/<your-virtual-env>/.Python

virtualenvwrapper指令

正如已接受的答案所示,根本原因可能是一个自制更新,这意味着您的virtualenv符号链接指向损坏的python路径-请参阅这里的详细信息。

对于每个虚拟env,您需要重新分配符号链接以指向正确的python路径(在酿造窖中)。下面是如何使用virtualenvwrapper来做到这一点。这里我正在更新一个名为“my-example-env”的虚拟环境。

cd ~/PYTHON_ENVS
find ./my-example-env -type l -delete
mkvirtualenv my-example-env

全部完成。

当你在新创建的virtualenv上遇到这个问题时,可能是你的python版本被“unlinked”了。

你可以通过运行:brew link python@3.8来解决这个问题 (但要指定特定的python版本)

你也可以运行brew doctor,它会告诉你,如果你有未链接的东西,以及如何修复这个。

virtualenv被破坏了。有时简单的方法是删除venv文件夹并重新创建virutalenv。

由于Homebrew重新安装python(因此破坏了符号链接),我的虚拟环境被破坏了,而且我之前做了一些“sudo pip install”。wezhong的提示对于解决问题非常有帮助,而无需重新安装软件包。对于混合权限问题,我还必须执行以下操作。

sudo chown -R my_username lib/python2.7/site-packages