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


当前回答

更新版本@Chris Wedgwood对保持站点包(保持安装包)的回答

cd ~/.virtualenv/name_of_broken_venv


mv lib/python2.7/site-packages ./    
rm -rf .Python bin lib include
virtualenv .
rm -rf lib/python2.7/site-packages
mv ./site-packages lib/python2.7/

其他回答

所以有很多方法,但其中一个对我有用的是如下,因为我已经冻结了我的requirements.txt文件。

因此,使用以下命令删除旧的虚拟环境 使用 禁用 cd . . Rm -r old_virtual_environment

使用PIP安装virtualenv python包 使用PIP安装virtualenv

然后检查是否安装正确 使用virtualenv—version

跳转到项目目录 使用CD project_directory

现在在项目目录中使用以下命令创建新的虚拟环境 使用virtualenv name_of_new_virtual_environment

现在激活新创建的虚拟环境 使用source name_of_new_virtual_environment/bin/activate

现在使用以下命令安装所有项目依赖项 使用PIP install -r requirements.txt

在我的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/

任何正在使用pipenv的人(你应该这样做!)都可以简单地使用这两个命令——而不需要激活venv:

rm -rf `pipenv --venv` # remove the broken venv
pipenv install --dev   # reinstall the venv from pipfile 

如果这是由于brew升级升级了Python而导致的,并且您可以降级到以前的版本,请尝试brew switch Python[以前的版本],例如brew switch Python 3.6.5。从这里。

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