scraping - Mac OS X El Capitan-Scrapy/Python ImportError: no se puede importar el nombre xmlrpc_client
extraer datos de una pagina web python (4)
Estoy tratando de usar Scrapy en Mac OS X El Capitan. Tengo zsh instalado y he intentado todo lo que pude encontrar en línea para solucionar este problema. También miré a Scrapy throws ImportError: ¡no puedo importar el nombre xmlrpc_client y no pude resolver mi problema!
Python instalado mediante brew y agregado "pip install scrapy":
➜ DriverEBV which python
/usr/local/bin/python
Mi .zshrc tiene la siguiente línea:
export PATH=/usr/local/bin:$PATH
export PYTHONPATH="/Library/Python/2.7/site-packages"
Este es el error que obtengo:
➜ DriverEBV scrapy runspider DriverEBV.py
Traceback (most recent call last):
File "/usr/local/bin/scrapy", line 7, in <module>
from scrapy.cmdline import execute
File "/Library/Python/2.7/site-packages/scrapy/__init__.py", line 48, in <module>
from scrapy.spiders import Spider
File "/Library/Python/2.7/site-packages/scrapy/spiders/__init__.py", line 10, in <module>
from scrapy.http import Request
File "/Library/Python/2.7/site-packages/scrapy/http/__init__.py", line 12, in <module>
from scrapy.http.request.rpc import XmlRpcRequest
File "/Library/Python/2.7/site-packages/scrapy/http/request/rpc.py", line 7, in <module>
from six.moves import xmlrpc_client as xmlrpclib
ImportError: cannot import name xmlrpc_client
Cuando ejecuto "pip install scrapy" ahora esto es lo que veo:
➜ DriverEBV pip install scrapy
Requirement already satisfied (use --upgrade to upgrade): scrapy in /Library/Python/2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.8.0 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /usr/local/lib/python2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): service-identity in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): cryptography>=0.7 in /usr/local/lib/python2.7/site-packages (from pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->scrapy)
Requirement already satisfied (use --upgrade to upgrade): characteristic>=14.0.0 in /Library/Python/2.7/site-packages (from service-identity->scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyasn1-modules in /Library/Python/2.7/site-packages (from service-identity->scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyasn1 in /Library/Python/2.7/site-packages (from service-identity->scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): enum34 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): ipaddress in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): idna>=2.0 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): cffi>=1.1.0 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python2.7/site-packages (from cffi>=1.1.0->cryptography>=0.7->pyOpenSSL->scrape)
¿Alguien capaz de ayudarme?
Lo que me ayudó fue desinstalar Six and Scrapy y luego instalarlo de nuevo :
pip uninstall six
pip uninstall scrapy
pip install six
pip install scrapy
Ejecutar con sudo
si es necesario.
O bien, también puede intentar actualizar seis y scrapy:
pip install --upgrade scrapy
pip install --upgrade six
No he tenido más que dolor en las bibliotecas de Python del sistema Mac OS X instaladas en el directorio /Library/Python
. Lo que funcionó bien para mí es una combinación de MacPorts y virtualenv:
Instalar MacPorts
Instale Python, pip y virtualenv desde MacPorts:
/opt/local/bin/port install python27 /opt/local/bin/port install py27-pip /opt/local/bin/port install py27-virtualenv
Configuración virtualenv:
/opt/local/bin/virtualenv-2.7 myenv
Activa virtualenv (¡no olvides el punto!)
. myenv/bin/activate
Instalar scrapy
pip install scrapy
De esta forma, las bibliotecas de Python del sistema permanecen intactas y puede instalar los paquetes que desee sin tener que eliminar o actualizar los paquetes existentes.
Creo que la mejor solución para OS X debería ser "No usar Python del sistema". Hará la vida más fácil. Este enlace muestra cómo hacer esto.
Hay un problema conocido que impide que pip actualice los paquetes del sistema. Esto debe abordarse para instalar con éxito Scrapy y sus dependencias. Aquí hay algunas soluciones propuestas:
(Recomendado) No use el sistema python, instale una nueva versión actualizada que no entre en conflicto con el resto de su sistema. Aquí le mostramos cómo hacerlo usando el administrador de paquetes homebrew:
- Instale homebrew siguiendo las instrucciones en http://brew.sh/
- Actualice su variable PATH para indicar que los paquetes homebrew deben usarse antes de los paquetes del sistema (Cambie .bashrc a .zshrc de forma correspondiente si está usando zsh como shell predeterminado):
echo "export PATH = / usr / local / bin: / usr / local / sbin: $ PATH" >> ~ / .bashrc
- Recargue .bashrc para asegurarse de que los cambios hayan tenido lugar:
fuente ~ / .bashrc
- Instalar Python:
brew instalar python
- Las versiones más recientes de python tienen un paquete con ellos, por lo que no será necesario instalarlo por separado. Si este no es el caso, actualice Python:
actualización de cerveza; brew actualización de python
Intente desinstalar mediante pip y luego vuelva a instalar usando el comando easy_install. Tuve el mismo problema con otro módulo de Python y hacerlo de esta manera me solucionó el problema en Mac OS X El Capitan.