Scrapy ImportError:无法导入名称xmlrpc_client

时间:2016-02-26 03:04:05

标签: python macos python-2.7 scrapy

我试图在Mac OS X EI上使用scrape,并且我已成功安装scrapy使用

pip install scrapy

在终端。 在那之后,当我尝试进口scrapy"时,我遇到了上述问题。在Pycharm:

Traceback (most recent call last):
File "/Users/ziyuan/PycharmProjects/untitled/en.py", line 1, in <module>
import scrape
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

我已尝试过Scrapy throws ImportError: cannot import name xmlrpc_client

的所有内容

具体来说,当我尝试最高投票的解决方案时,第二行

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

又引发了另一个问题:

rm: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info: Operation not permitted
rm: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py: Operation not permitted
rm: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.pyc: Operation not permitted

我现在该怎么办?我已经在谷歌搜索了很长时间了,我现在真的不知道。

3 个答案:

答案 0 :(得分:1)

处理此问题的另一种方法,而不是您提到的最高投票解决方案,是使用other Python(不是系统问题)和virtualenv

但为什么new Python?问题Here's an good article。原因很容易找到。

为什么virtualenv?您可以获得here点数表格。

此外,使用$ sudo pip (...)可能不是一个好主意。请查看this

让我们来看看Scrapy的贡献者之一recommended way吧!看看Mac OS X部分:使用Homebrew安装新的Python,更新你的路径变量,等等。虽然她说使用virtualenv是可选的,但我在使用Scrapy时只能将ImportError: blahblah..放在我自己的虚拟环境中。

答案 1 :(得分:1)

在尝试了几个解决方案并尝试解决六个1.4.1版本之后,我发现这很有效:

sudo easy_install --upgrade six

答案 2 :(得分:0)

Operation not permited表示您无权删除此内容。请尝试sudo rm将其删除为超级用户。

虽然理想情况下你不应该在你的python中rm做任何事情,但试试pip uninstall six。不过,您仍然需要six,因此您可以尝试通过pip install six --upgrade进行升级。

请注意,您可能必须使用pip2而不是pip,因为某些系统会对其进行不同的标记。