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


当前回答

这里所有的答案都很好,我尝试了Ryan和Chris上面提到的一些解决方案,但无法解决问题,所以不得不采用快速而肮脏的方法。

Rm -rf <项目目录>(或者mv <项目目录> <备份项目目录>如果你想保留备份) Git克隆<项目Git url> 继续前进!

这里没有什么新奇的东西,但它让生活更轻松!

其他回答

我(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

接受的答案不适合我:文件$WORKON_HOME/*/bin/python2.7不再是一个符号链接,它是一个成熟的可执行文件:

$ file $WORKON_HOME/*/bin/python2.7
/Users/sds/.virtualenvs/.../bin/python2.7: Mach-O 64-bit executable x86_64
...

解决方案是完全删除并从头重新创建所有虚拟环境。

供参考:

deactivate
pip install --user virtualenv virtualenvwrapper
pip install --user --upgrade virtualenv virtualenvwrapper
for ve in $(lsvirtualenv -b); do
  # assume that each VE is associated with a project
  # and the project has the requirements.txt file
  project=$(cat $WORKON_HOME/$ve/.project)
  rmvirtualenv $ve
  mkvirtualenv -a $project -r requirements.txt $ve
done

在我的OSX Catalina上升级brew后,我也面临着同样的问题。

在尝试了很多东西之后,我发现以下是最好的和简单的解决方案。

首先,删除虚拟环境。(可选)

find myvirtualenv -type l -delete

然后重新创建一个新的virtualenv

virtualenv myvirtualenv

参考:https://www.jeremycade.com/python/osx/homebrew/2015/03/02/fixing-virtualenv-after-a-python-upgrade/

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

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

mkvirtualenv env_to_fix

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

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

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