python-pip
在 Ubuntu 14.04.1 中安装该软件包后,我得到:
$ pip
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 351, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2363, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2088, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 10, in <module>
from pip.util import get_installed_distributions, get_prog
File "/usr/lib/python2.7/dist-packages/pip/util.py", line 18, in <module>
from distlib import version
File "/usr/lib/python2.7/dist-packages/distlib/version.py", line 14, in <module>
from .compat import string_types
File "/usr/lib/python2.7/dist-packages/distlib/compat.py", line 31, in <module>
from urllib2 import (Request, urlopen, URLError, HTTPError,
ImportError: cannot import name HTTPSHandler
我检查过,我确实已经安装libssl-dev
并python-openssl
安装了,问题似乎是ssl
无法导入该模块:
>>> import ssl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/ssl.py", line 61, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: No module named _ssl
不过,所有内容都是从 Ubuntu 存储库安装的,所以我不知道是什么导致了问题。
答案1
经过一番努力,我终于找到了答案。简而言之(不太确定第一个命令是否必要):
sudo apt-get install libssl-dev
sudo apt-get --reinstall install libpython2.7-stdlib
详细的解释是,基于 Python 寻找库的地方:
python -c "import sys; print sys.path"
并且看到在另一台“健康”的 14.04.1 服务器上有一个_ssl.so
文件/usr/lib/python2.7/lib-dynload
,我发现负责此问题的软件包是libpython2.7-stdlib
:
$ dpkg -S /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so
libpython2.7-stdlib:amd64: /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so
在原来的机器上重新安装后libpython2.7-stdlib
,文件被重新创建,问题消失。
sudo apt-get --reinstall install libpython2.7-stdlib
(我真的不知道这个 _ssl 文件为什么会在系统中丢失——我不是唯一使用该服务器的人……)
答案2
您的系统中可能安装了多个 Python 版本。pip 使用了错误的 Python 版本,运行python -V
以查看要使用的 Python 默认版本,您可能需要更改 pip 以使用正确的版本,方法是用/usr/bin/pip
您最喜欢的文本编辑器打开,然后更改:
#!/usr/bin/python
为正确的版本,例如#!/usr/bin/python2.6