我最近在我的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)?


当前回答

我肯定我来晚了,但我想说的是,这个问题的解决办法比这里讨论的要简单得多。

您可以轻松地重新生成虚拟环境,而无需删除/编辑任何内容。假设你的坏环境被称为env_to_fix,你可以执行以下命令:

mkvirtualenv env_to_fix

这将重新生成链接并修复环境,而不需要将当前状态转储到某个地方并恢复它。

其他回答

当我在mac上将python运行时从2指向3时,我遇到了同样的问题,将别名python指向python 3路径。然后,我重新创建一个新的virtualenv并重新安装我的项目所需的那些包。对于我的用例,我有一个python程序写入谷歌表。清理了一些不同于python2实现的包,事情又开始工作了。

在尝试了一些事情之后,这对我来说很有效:

进入你的virtualenv目录(但不要运行workon):

cd ~/.virtualenv/name_of_broken_venv

现在删除这些文件:

rm -rf .Python bin/python* lib/python2.7/* include/python2.7

然后重新构建venv,运行:

virtualenv .
workon name_of_broken_venv
pip freeze

现在您应该再次看到已安装包的列表。

我肯定我来晚了,但我想说的是,这个问题的解决办法比这里讨论的要简单得多。

您可以轻松地重新生成虚拟环境,而无需删除/编辑任何内容。假设你的坏环境被称为env_to_fix,你可以执行以下命令:

mkvirtualenv env_to_fix

这将重新生成链接并修复环境,而不需要将当前状态转储到某个地方并恢复它。

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

我尝试了最常用的几种方法,但对我来说,它们都不起作用。最终奏效的方法是:

sudo pip install tox

即使毒理已经安装好了。输出以:

Successfully built filelock
Installing collected packages: py, pluggy, toml, filelock, tox
Successfully installed filelock-3.0.10 pluggy-0.11.0 py-1.8.0 toml-0.10.0 tox-3.9.0