Подтвердить что ты не робот

Scrapy throws ImportError: невозможно импортировать имя xmlrpc_client

После установки Scrapy через pip и Python 2.7.10:

scrapy
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

Но я могу импортировать модуль:

Python 2.7.10 (default, Jun 10 2015, 19:42:47) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import scrapy
>>> 

Что происходит?

4b9b3361

Ответ 1

Я только что исправил эту проблему в своей ОС X.

Сначала создайте резервные копии файлов.

sudo rm -rf /Library/Python/2.7/site-packages/six*
sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six*
sudo pip install six

Scrapy 1.0.0 готов к работе.


Если вы столкнулись с ошибкой rm: /System/Library/... Operation not permitted

Попробуйте отключить Защита целостности системы
См. Операция Не разрешена, если на корневом капитане El capitan (отключен от rootless)

Ответ 2

Это известная проблема в Mac OSX для Scrapy. Вы можете обратиться к этой ссылке.

В основном проблема связана с PYTHONPATH в вашей системе. Чтобы решить проблему, измените текущий PYTHONPATH, чтобы указать на более новую версию или не версию Mac OSX Python. Перед запуском Scrapy попробуйте:

export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH

Если это сработает, вы можете постоянно изменять файл .bashrc:

echo "export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH" >> ~/.bashrc

Если это не работает, посмотрите на ссылку выше.

Ответ 3

У меня была такая же точная проблема при обновлении до Scrapy 1.0. После многочисленных работ вокруг решения, которое работало для меня, было удаление шести с помощью pip:

sudo pip удалить шесть

а затем переустановить шесть через easy_install

easy_install six

Надеюсь, что это работает!

Ответ 4

Лучше, чем понизить Scrapy, чтобы обновить версию из шести:

pip install --upgrade six scrapy

Это позволит вам использовать все лакомства от Scrapy 1.0;)

Ответ 5

У меня была такая же проблема. Попробуйте следующее:

sudo pip удаление инструментария

sudo pip install scrapy == 0.24.2

Затем сделайте снимок

Ответ 6

Я считаю, что лучшим решением для OS X должно быть "Dont use system python". Это облегчит жизнь. Эта ссылка показывает, как это сделать.

Это известная проблема, которая предотвращает обновление пакетов обновления пакетов. Это необходимо решить, чтобы успешно установить Scrapy и его зависимости. Вот несколько предлагаемых решений:

(рекомендуется) Не используйте системный python, установите новую, обновленную версию, которая не конфликтует с остальной частью вашей системы. Вот как это сделать, используя менеджер пакетов homebrew:

  • Установите homebrew в соответствии с инструкциями в http://brew.sh/
  • Обновите свою переменную PATH, чтобы указать, что пакеты homebrew должны использоваться перед системными пакетами (измените .bashrc на .zshrc, если вы используете zsh в качестве оболочки по умолчанию):

echo "export PATH =/usr/local/bin:/usr/local/sbin: $PATH" → ~/.bashrc

  1. Перезагрузите .bashrc, чтобы убедиться, что изменения произошли:

источник ~/.bashrc

  1. Установить python:

brew установить python

  1. В последних версиях python есть пакет, связанный с ними, поэтому вам не нужно устанавливать его отдельно. Если это не так, обновите python:

brew обновление; brew upgrade python