Scrapy 抛出 ImportError: cannot import name xmlrpc_client
Posted
技术标签:
【中文标题】Scrapy 抛出 ImportError: cannot import name xmlrpc_client【英文标题】:Scrapy throws ImportError: cannot import name xmlrpc_client 【发布时间】:2015-09-07 00:17:51 【问题描述】:通过 pip 安装 Scrapy 并拥有 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
>>>
发生了什么事?
【问题讨论】:
您是否尝试卸载并重新安装six
?
【参考方案1】:
我刚刚在我的 OS 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
请尝试禁用System Integrity Protection 见Operation Not Permitted when on root El capitan (rootless disabled)
【讨论】:
这里也发生过。似乎是 OS X 独有的 这对我有帮助。我已经卸载了scrapy。执行上述命令,然后安装scrapy 1.0.0:sudo pip install scrapy==1.0.0
。谢谢你:)
老兄,你节省了我的时间!
第二行在 OS X El Capitan 上抛出错误提示“rm: /System/Library/... Operation not allowed”
@rraallvv 您可以尝试禁用系统完整性保护。见***.com/questions/32659348/…【参考方案2】:
这是 Mac OSX 上 Scrapy 的一个已知问题。可以参考this link。
基本上问题出在系统中的 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 六个
希望有效!
【讨论】:
这是迄今为止最简单的解决方案。 使用easy_install是discouraged nowadays。用 pip 升级更好。【参考方案4】:比降级 Scrapy 更好的是升级你的 6 版本:
pip install --upgrade six scrapy
这将允许您使用 Scrapy 1.0 中的所有好东西;)
【讨论】:
【参考方案5】:我也遇到了同样的问题。试试这个:
sudo pip 卸载scrapy
sudo pip install scrapy==0.24.2
那就试一试
【讨论】:
hm,升级 6 比使用旧的 Scrapy 更好。pip install --upgrade six
应该这样做。
降级软件包并不能解决问题。它得到一个旧包,升级是有原因的......【参考方案6】:
我认为 OS X 上最好的解决方案应该是“不要使用系统 python”。它会让生活更轻松。 This link 展示了如何做到这一点。
有一个已知问题会阻止 pip 更新系统包。必须解决这个问题才能成功安装 Scrapy 及其依赖项。以下是一些建议的解决方案:
(推荐)不要使用系统 python,安装一个不与系统其余部分冲突的新的更新版本。以下是使用自制包管理器的方法:
按照http://brew.sh/ 中的说明安装自制软件 更新您的 PATH 变量以声明应在系统软件包之前使用自制软件包(如果您使用 zsh 作为默认 shell,请将 .bashrc 更改为 .zshrc):
echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc
重新加载 .bashrc 以确保更改已发生:
来源 ~/.bashrc
安装python:
brew 安装 python
最新版本的 python 已将 pip 与它们捆绑在一起,因此您无需单独安装它。如果不是这种情况,请升级 python:
酿造更新; brew升级python
【讨论】:
以上是关于Scrapy 抛出 ImportError: cannot import name xmlrpc_client的主要内容,如果未能解决你的问题,请参考以下文章
scrapy调试时出现 ImportError: No module named win32api
Scrapy运行ImportError: No module named win32api错误
scrapy爬虫实例w3school报错ImportError: No module named w3school.items
Django 问题:django.setup() 抛出“ImportError: No module named 'project_name'”