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


当前回答

简单地升级python3对我来说很有效:

brew upgrade python3

其他回答

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

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

所以有很多方法,但其中一个对我有用的是如下,因为我已经冻结了我的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

如果你用pipenv,用pipenv -rm就能解决问题。

看来解决这个问题的正确方法是跑步

 pip install --upgrade virtualenv

在你用Homebrew升级python之后。

对于任何安装python之类的程序的公式来说,这应该是一个通用的过程,因为python有自己的包管理系统。当你安装brew install python时,你会安装python和pip以及easy_install和virtualenv等等。因此,如果这些工具可以自我更新,最好在将Homebrew视为问题的根源之前尝试这样做。

使用Python 2.7.10。

一个命令virtualenv path-to-env就可以做到这一点。文档

$ virtualenv path-to-env
Overwriting path-to-env/lib/python2.7/orig-prefix.txt with new content
New python executable in path-to-env/bin/python2.7
Also creating executable in path-to-env/bin/python
Installing setuptools, pip, wheel...done.