关于python:Scrapy ImportError:无法导入名称xmlrpc_client

Scrapy ImportError: cannot import name xmlrpc_client

我正在尝试在MacOSXEI上使用scrape,并且我已经成功地安装了scrappy-using

1
pip install scrapy

在终点站。在那之后,我在Pycharm中尝试"导入Scrapy"时遇到了上述问题:

1
2
3
4
5
6
7
8
9
10
11
12
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

我已经尝试了从scrappy throws导入的所有操作错误:无法导入名称xmlrpc_client

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

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

我又遇到了一个问题:

1
2
3
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

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


在尝试了几个解决方案并尝试使用6个1.4.1版本之后,我发现这是有效的:

1
sudo easy_install --upgrade six


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

但为什么是new Python?这是一篇关于这个问题的好文章。原因很容易找到。

为什么是virtualenv?你可以在这里拿到积分表。

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

所以让我们来做一个Scrapy的贡献者推荐的方式!看看MacOSX部分:使用自制来安装新的python,更新你的路径变量等等。虽然她说使用virtualenv是可选的,但是当使用scrapy时,我只能将ImportError: blahblah..保存在我自己的虚拟环境中。


Operation not permited表示您没有权限删除此文件。尝试sudo rm而不是作为超级用户删除它。

虽然在理想情况下,您不应该从您的python中获得任何东西,但是尝试使用pip uninstall six。但是您仍然需要six,所以您可以尝试通过pip install six --upgrade升级它。

请注意,您可能必须使用pip2而不是pip,因为某些系统的标签不同。