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
>>>
Что происходит?
Ответы
Ответ 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
- Перезагрузите .bashrc, чтобы убедиться, что изменения произошли:
источник ~/.bashrc
- Установить python:
brew установить python
- В последних версиях python есть пакет, связанный с ними, поэтому вам не нужно устанавливать его отдельно. Если это не так, обновите python:
brew обновление; brew upgrade python