python - requests - pip install bs4 dando el error_socketobject
how to use beautifulsoup4 (5)
Estoy tratando de instalar BeautifulSoup4 usando el comando pip install BeautifulSoup4
, según la documentación de bs aquí:
https://www.crummy.com/software/BeautifulSoup/#Download
Estoy usando Mac OS X 10.7.5 y Python 2.7.12
Cuando ejecuto el comando en la Terminal, obtengo el error:
AttributeError: ''_socketobject'' object has no attribute ''set_tlsext_host_name''
¿Alguien puede sugerir lo que estoy haciendo mal? Gracias por adelantado.
EDITAR: a la luz de los comentarios que he intentado ejecutar sudo pip install pyopenssl
sin embargo, obtengo el mismo error ''socketobject''.
Por lo que entiendo, la versión del paquete pyopenssl
instalada en todo el sistema no está actualizada . Actualizarlo:
sudo pip install --upgrade pyopenssl
O bien, quítelo e instale lo último en su entorno virtual:
$ sudo pip uninstall pyopenssl
$ # activate virtual environment
(myvirtualenv) $ pip install --upgrade pyopenssl
Alternativamente, puede instalar Anaconda Python desde: https://www.continuum.io/downloads
Esta instalación incluye BS fuera de la caja como la mayoría de las bibliotecas comunes que usará. Además, hace que la instalación de la biblioteca sea bastante fácil.
Estoy usando OS X 10.12
y python 2.7.10
sudo easy_install BeautifulSoup4
sudo easy_install pyopenssl
Todos trabajaron bien.
"Eso sucedió porque tu sistema operativo tiene una vieja biblioteca pyOpenSSL que no tiene un atributo de aceptación ''set_tlsext_host_name''. Para solucionar esto, necesitas agregar la dependencia pyOpenSSL> = 0.13.
$ brew purge python-openssl
$ brew install libffi-dev
$ brew install pyOpenSSL
Avíseme si esto no está claro o si no funciona para usted.
Ver https://.com/a/31576259/3579910 :
Tratar:
sudo apt-get purge python-openssl
sudo apt-get install libffi-dev
sudo pip install pyopenssl
Aparentemente no puedes votar por duplicado si hay una recompensa abierta.
Fondo:
Eso sucedió porque Ubuntu 12.04 (que es el sistema operativo de mi servidor) tiene una vieja biblioteca pyOpenSSL que no acepta el atributo ''set_tlsext_host_name''. Para solucionar eso, necesita agregar dependencia pyOpenSSL> = 0.13. En Ubuntu para actualizar pyOpenSSL use pip, también necesita instalar libffi-dev y eliminar python-openssl por apt.
En Mac, puede obtener homebrew para reemplazar las llamadas apt-get: siga las instrucciones para instalar homebrew .