pip install bs4给出_socketobject错误

时间:2016-10-08 17:34:30

标签: python python-2.7 beautifulsoup

我正在尝试使用命令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'错误。

5 个答案:

答案 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.12python 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。

Source

在Mac上,您可以让自制软件取代apt-get电话:按照安装homebrew的说明进行操作。