Mac OS X El Capitan – Scrapy / Python ImportError: no se puede importar el nombre xmlrpc_client

Estoy tratando de usar Scrapy en Mac OS X El Capitan. He instalado zsh y he intentado todo lo que pude encontrar en línea para solucionar este problema. También he examinado Scrapy throws ImportError: no puedo importar el nombre xmlrpc_client y no pude resolver mi problema.

Python se instaló a través de brew y agregó “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 recibo:

 ➜ DriverEBV scrapy runspider DriverEBV.py Traceback (most recent call last): File "/usr/local/bin/scrapy", line 7, in  from scrapy.cmdline import execute File "/Library/Python/2.7/site-packages/scrapy/__init__.py", line 48, in  from scrapy.spiders import Spider File "/Library/Python/2.7/site-packages/scrapy/spiders/__init__.py", line 10, in  from scrapy.http import Request File "/Library/Python/2.7/site-packages/scrapy/http/__init__.py", line 12, in  from scrapy.http.request.rpc import XmlRpcRequest File "/Library/Python/2.7/site-packages/scrapy/http/request/rpc.py", line 7, in  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 me puede ayudar?

No he tenido más que dolor con las bibliotecas de Python del sistema Mac OS X instaladas en el directorio /Library/Python . Lo que me ha funcionado bien es una combinación de MacPorts y virtualenv:

  1. Instalar macports

  2. 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 
  3. Configuración virtualenv:

     /opt/local/bin/virtualenv-2.7 myenv 
  4. Activar virtualenv (no olvides el punto!)

     . myenv/bin/activate 
  5. Instalar scrapy

     pip install scrapy 

De esta manera, las bibliotecas de Python del sistema están intactas y puede instalar cualquier paquete que desee sin tener que eliminar o actualizar paquetes existentes.

Lo que me ayudó fue desinstalar seis y scrapy y luego volver a instalar :

 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 

Intente desinstalarlo a través de pip y luego vuelva a instalarlo con 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.

Creo que la mejor solución en 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 evita que pip actualice los paquetes del sistema. Esto debe ser dirigido para instalar con éxito Scrapy y sus dependencias. Aquí hay algunas soluciones propuestas:

(Recomendado) No use python del sistema, instale una versión nueva y actualizada que no entre en conflicto con el rest de su sistema. Aquí se explica cómo hacerlo utilizando el gestor de paquetes homebrew:

  1. Instale homebrew siguiendo las instrucciones en http://brew.sh/
  2. Actualice su variable PATH para indicar que los paquetes homebrew se deben usar antes que los paquetes del sistema (cambie .bashrc a .zshrc de forma acorde si está usando zsh como shell predeterminado):

echo “export PATH = / usr / local / bin: / usr / local / sbin: $ PATH” >> ~ / .bashrc

  1. Vuelva a cargar .bashrc para asegurarse de que los cambios hayan tenido lugar:

fuente ~ / .bashrc

  1. Instala python:

brew instalar python

  1. Las últimas versiones de python se han empaquetado con ellos para que no tenga que instalarlo por separado. Si este no es el caso, actualiza python:

actualización de cerveza preparar python de actualización