![Python 中缺少 ssl。'module' 对象没有属性 'HTTPSConnection'](https://linux22.com/image/837971/Python%20%E4%B8%AD%E7%BC%BA%E5%B0%91%20ssl%E3%80%82'module'%20%E5%AF%B9%E8%B1%A1%E6%B2%A1%E6%9C%89%E5%B1%9E%E6%80%A7%20'HTTPSConnection'%20.png)
我的主要问题是 python 的 httplib 模块缺少 HTTPSConnection。
当我尝试使用 pip 安装 fabric 时,出现此错误:“module”对象没有属性“HTTPSConnection”
我使用了 easy_install,它大部分时候都有效,但也引发了一个错误:
Download error: unknown url type: https -- Some packages may not be found!
这是我安装 python2.7 的步骤
sudo apt-get install build-essential
sudo apt-get install libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar –xvf Python-2.7.5.tgz
cd Python-2.7.5
./configure --enable-shared --prefix=/usr --sysconfdir=/etc
make
sudo make altinstall
已安装的安装工具:
wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea
sudo sh setuptools-0.6c11-py2.7.egg
已安装的pip:
curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py
答案1
我不得不问,你为什么要费尽心思从源代码构建 Python?我只是好奇。我可能把它理解为一种学习练习,但对于大多数实际目的(尤其是如果你正在做一个原始构建,没有对原版 Python 进行任何修改,就像你展示的那样),Ubuntu 中包含的软件包可以很好地工作。
显然,为了让 Python 能够支持 SSL,你需要在Modules/Setup.dist
运行 之前取消注释 中的某些内容./configure
。这从 的第 213 行开始Setup.dist
:
# Socket module helper for socket(2)
#_socket socketmodule.c timemodule.c
# ^^^^ UNCOMMENT THIS LINE
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
# ^^^^ UNCOMMENT PREVIOUS 4 LINES
# On Ubuntu, set SSL=/usr/ since /usr/include and /usr/include/openssl are there.