如何修复OSx更新后损坏的Python 2.7.11?深入了解Homebrew及其它解决方法。

26

发生了什么:

在一次 OSx 更新并安装了新版本的 python 2.7 后,我的 virtualevn 环境完全崩溃了,我苦苦地尝试修复它。我不确定是什么原因导致的,最初我尝试了一整套方法,但是这些方法 都没有起作用,列举如下。而我所采取的解决方法将在答案部分提供。

无法修复 virtualenv 命令未找到的方法:

  • 通过 homebrew 安装 python,然后使用 pip 安装 virtualenv
  • 通过 https://www.python.org 安装 python,然后使用 pip 安装 virtualenv

以下相关问题对我有所帮助,但没有提供解决问题的方法:

  1. virtualenv-command-not-found
  2. virtualenv-workon-command-not-found

我所尝试的完整手动恢复过程(不要这样做!):

这并没有完全解决我的问题,只是给你一个了解我在找到正确的修复 python 开发环境的方法之前所经历的步骤。

  • Removed python 2.7 by using the post in here
  • Removed the homebrew installed version
  • Installed python through the pkg file in Mac OS X 32-bit i386/PPC installer or Mac OS X 64-bit/32-bit installer
  • Manually installed virtualenv following the instructions from here:

     curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.1.2.tar.gz
     tar xvfz virtualenv-13.1.2.tar.gz 
     cd virtualenv-13.1.2 
     sudo python setup.py install
    
  • Manaully install pip through 7: curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7

尽管经过了这一切,PIP仍然无法正常工作:

虚拟环境创建后,我的pip仍将软件包安装在主Python文件夹中,而非在虚拟环境下安装。我在这里这里都没有找到解决方法。我的解决方法是在虚拟环境下使用以下选项运行pip: 1. 激活虚拟环境,使$VIRTUAL_ENV设置为:

source venv/bin/activate

2- 强制 pip 安装到正确的目标位置:

pip install --target=$VIRTUAL_ENV/lib/python2.7/site-packages   

摘要

某个东西出了大问题,我修复开发环境的最佳方法已在该问题的答案中提供。


我在从Time Machine恢复并升级到最新版本的Sierra后遇到了这个问题。任何使用Python的东西都会导致错误python --version Illegal instruction: 4,重新安装后似乎又可以正常工作了。 - doublesharp
在这里找到解决方案:https://dev59.com/_F8e5IYBdhLWcg3wyMwr#47832840 - Sébastien Allamand
2个回答

50

原因

在我的情况下,是一次OSx升级影响了我的homebrew。在升级到python 2.7.11后,安装并不正常。

如何解决:

我在这里的帖子中找到了第3和第4步,非常感谢https://github.com/baronomasia

1 - 使用此处的文章删除python 2.7。

2 - 删除homebrew安装的python版本。

brew uninstall python

3- 重新安装Xcode命令行工具:

sudo xcode-select --install

4-通过Homebrew升级Homebrew并重新安装Python:

brew update && brew reinstall python    

5
第二步,我需要添加--force标志。即:brew uninstall python --force - dhfromkorea
我尝试过这个来修复我的问题:“每当我运行pip2时,命令“python setup.py egg_info”失败,错误代码为1”,但似乎没有起作用。不知道是否还有其他人遇到了这个破损的pip问题? - Ben
1
此外,要删除符号链接,您可以使用以下命令:cd /usr/local/bin/ 然后, ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | tr -d @ | xargs rm - Shubham Kushwah

3

在执行了 brew upgrade python 命令后,我的系统 Python 出现了问题,virtualenvwrapper.sh 文件无法使用,而且 pip 命令突然失效了。我到 python.org 下载了 Python 2.7.13 安装程序并运行,现在我拥有了 Python 2.7.13、pip,并能够运行 pip install virtualenvwrapper,一切似乎正常了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接