【问题标题】:pip install bs4 giving _socketobject errorpip install bs4 给出 _socketobject 错误
【发布时间】:2017-02-17 12:30:16
【问题描述】:

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

谁能建议我做错了什么?提前致谢。

编辑: 根据 cmets,我尝试运行 sudo pip install pyopenssl,但是我得到了相同的“socketobject”错误。

【问题讨论】:

  • pip install -U pyOpenSSL
  • @MaximilianPeters 不幸的是同样的错误
  • @saurabhbaid 另一个 OP 的问题是在 Ubuntu 上,解决方案涉及 apt-get,我知道你不能在 mac 上使用它(如果我错了,请纠正我?)
  • 我不是 mac 用户,但我不认为你的问题是 MAC 特有的,你的机器上似乎缺少一些依赖库,如 libffi-dev 或 PyOpenSSL。

标签: python python-2.7 beautifulsoup


【解决方案1】:

据我了解,系统范围内安装的pyopenssl 软件包版本不是最新的。升级它:

sudo pip install --upgrade pyopenssl

或者,删除它并在您的虚拟环境中安装最新版本:

$ sudo pip uninstall pyopenssl
$ # activate virtual environment
(myvirtualenv) $ pip install --upgrade pyopenssl

【讨论】:

    【解决方案2】:

    或者,您可以从以下位置安装 Anaconda Python:https://www.continuum.io/downloads

    此安装包括开箱即用的 BS,作为您将使用的大多数常用库。此外,它使库的安装变得非常容易。

    【讨论】:

      【解决方案3】:

      我正在使用OS X 10.12python 2.7.10

      sudo easy_install BeautifulSoup4
      sudo easy_install pyopenssl
      

      他们都工作得很好。

      【讨论】:

        【解决方案4】:

        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

        【讨论】:

        • 知道 brew 相当于 purge 是什么吗? @TemporalWolf
        • @tompreston 我会看看这个SO answer
        【解决方案5】:

        “这是因为你的操作系统有旧的 pyOpenSSL 库,它不接受属性‘set_tlsext_host_name’。 要解决这个问题,您需要添加依赖 pyOpenSSL >= 0.13。

        $ brew purge python-openssl
        $ brew install libffi-dev
        $ brew install pyOpenSSL
        

        如果不清楚或者对您不起作用,请告诉我。

        【讨论】:

        • 谢谢,但是我可以在 Mac 上运行 apt-get 吗?
        猜你喜欢
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        • 2018-12-24
        • 1970-01-01
        • 2020-04-22
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多