Python ';pip3——版本';由于语法错误而失败

Python ';pip3——版本';由于语法错误而失败,python,osx-mavericks,setuptools,Python,Osx Mavericks,Setuptools,这一切都始于我开始安装Python 3的请求库时(我在OSX Mavericks上运行Python 2.7.5(由brew安装Python)和3.4.2(由brew安装Python 3)运行时。当我运行pip3--version(或与pip3命令相关的任何内容)时,我看到: $ pip3 --version Traceback (most recent call last): File "/usr/local/bin/pip3", line 7, in <module>

这一切都始于我开始安装Python 3的请求库时(我在OSX Mavericks上运行Python 2.7.5(由
brew安装Python
)和3.4.2(由
brew安装Python 3
)运行时。当我运行
pip3--version
(或与pip3命令相关的任何内容)时,我看到:

$ pip3 --version
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
  File "/usr/local/lib/python3.4/site-packages/pip/__init__.py", line 11, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/local/lib/python3.4/site-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/local/lib/python3.4/site-packages/pip/download.py", line 22, in <module>
    from pip._vendor import requests, six
  File "/usr/local/lib/python3.4/site-packages/pip/_vendor/requests/__init__.py", line 53, in <module>
    from .packages.urllib3.contrib import pyopenssl
  File "/usr/local/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py", line 49, in <module>
    from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/ndg/httpsclient/ssl_peer_verification.py", line 17
    except ImportError, e:
                      ^
SyntaxError: invalid syntax
$ pip --version
pip 1.5.6 from /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg (python 2.7)
出于理智的考虑,当我进入交互式口译员时,我会看到:

$ python3
Python 3.4.2 (default, Oct 19 2014, 17:52:17) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

与更新pip3相关的许多其他答案都建议我使用此推荐的
pip3安装更新pip3——升级pip
,这会产生相同的错误,或者我使用
easy\U install-U pip
,但由于brew如何设置Python,它只更新Python 2.7.5版本(没有
easy\U install3
)。有什么想法吗?

根本问题是,您不知何故在3.x站点包中安装了一个仅适用于Python 2.x的包

在此基础上,您实际上有两个不同的Python2.7安装(Apple和Homebrew)相互交叉,这可能与您如何将2.7包安装到3.x中有关

无论如何,这会破坏
pip
的原因是
pip
具有各种可选的依赖项,如果存在,它会尝试导入这些依赖项,其中一些依赖项会执行相同的操作,以此类推,最后,启动
pip
就是导入包

我不知道你是怎么得到这个软件包的。一个标准的自制3.x在两个额外的站点软件包目录中查找(启动
python3
然后
import sys;print(sys.path)
以查看它在
pip3
安装目录之外的所有位置,包括stdlib和site)

在本例中,您以某种方式将2.x版的
ndg httpsclient
安装到
/usr/local/ceral/python3/3.4.2\u 1/Frameworks/Python.framework/Versions/3.4/lib中/‌​python3.4/站点包

由于您没有使用
pip
安装它,而且更重要的是,由于您首先不能运行
pip
,因此您不能只
pip卸载它。因此:

rm -rf /usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/‌​python3.4/site-packages/ndg*
这可能会破坏依赖它的一些其他软件包。一旦您开始工作,您可以使用
pip3 list
查看您安装的所有网站软件包并对其进行测试。如果您想变得偏执,请执行以下操作:

$ pip3 list > mypackages
$ rm -rf <each site-package directory>
$ brew uninstall python3
$ brew install python3
$ pip3 install -r mypackages
$pip3 list>mypackages
$rm-rf
$brew卸载python3
$brew安装python3
$pip3安装-r mypackages

你可能想要同样地清理你的自制2.7(或者干脆放弃它,只使用苹果的——特别是因为我很确定你正在运行苹果的),以及苹果2.7的网站包(当然不是苹果的Python本身,因为你不能卸载它).

python3`哪个pip3`--version
会产生相同的错误?刚刚测试过,是的。我还尝试运行了
brew卸载python3
并重新安装了它。不知怎的,您成功地安装了Python 2.x版本的东西(可能是
请求
?)在你的Python3.x站点包中。有一些第三方包,如果可用,将使用
pip
,如果其中一个可用但已损坏,则可能会损坏
pip
。同时,
pip--version
正在报告为苹果预安装的Python2.7安装的类似
pip
,而不是new 2.7您是用Homebrew安装的。路径是苹果默认网站包的一部分,但不是Homebrew的,更不用说它是Python 2.7.5(这是Mavericks附带的,但不是Homebrew几个月来安装的)。这意味着你已经做了一些交叉污染了你的两个Python 2.7的事情,所以如果你的3.4.Oh也被搞砸了也就不足为奇了,
Python
是由clang5编译的,而不是clang6编译的,这意味着你显然不是用自制软件构建的,你运行的是别人构建的二进制文件几个月前,在这种情况下,最有可能是苹果公司。
哪个python
可能会说
/usr/bin/python
,而不是
/usr/local/bin/python
,对吗?