我正在尝试使用命令pip install BeautifulSoup4
安装BeautifulSoup4,根据此处的bs文档:
https://www.crummy.com/software/BeautifulSoup/#Download
我使用的是Mac OS X 10.7.5和python 2.7.12
当我在终端中运行命令时出现错误:
AttributeError: '_socketobject' object has no attribute 'set_tlsext_host_name'
任何人都可以建议我做错了什么吗?提前谢谢。
编辑:
根据评论,我试图运行sudo pip install pyopenssl
但是我得到了相同的' socketobject'错误。
答案 0 :(得分:1)
根据我的理解,系统范围内安装的 pyopenssl
软件包版本不是最新的。升级它:
sudo pip install --upgrade pyopenssl
或者,将其删除并在虚拟环境中安装最新版本:
$ sudo pip uninstall pyopenssl
$ # activate virtual environment
(myvirtualenv) $ pip install --upgrade pyopenssl
答案 1 :(得分:1)
"发生这种情况是因为你的操作系统有旧的pyOpenSSL库,它不是一个接受属性' set_tlsext_host_name'。 要解决此问题,您需要添加依赖pyOpenSSL> = 0.13。
$ brew purge python-openssl
$ brew install libffi-dev
$ brew install pyOpenSSL
如果不清楚或者它是否适合您,请告诉我。
答案 2 :(得分:0)
或者,您可以从https://www.continuum.io/downloads
安装Anaconda Python此安装包含开箱即用的BS,因为您将使用大多数常用库。此外,它使图书馆安装变得非常容易。
答案 3 :(得分:0)
我正在使用OS X 10.12
和python 2.7.10
sudo easy_install BeautifulSoup4
sudo easy_install pyopenssl
他们一切都很好。
答案 4 :(得分:0)
请参阅https://stackoverflow.com/a/31576259/3579910:
尝试:
sudo apt-get purge python-openssl
sudo apt-get install libffi-dev
sudo pip install pyopenssl
如果有开放的赏金,显然你不能投票重复。
背景:
发生这种情况是因为Ubuntu 12.04(这是我服务器的操作系统)已经过时了 pyOpenSSL库,不接受属性'set_tlsext_host_name'。 为了解决这个问题,你需要添加依赖pyOpenSSL> = 0.13。在Ubuntu上 对于更新pyOpenSSL使用pip,你还需要安装libffi-dev和 通过apt删除python-openssl。
在Mac上,您可以让自制软件取代apt-get电话:按照安装homebrew的说明进行操作。