【问题标题】:Scrapy ImportError: cannot import name xmlrpc_clientScrapy ImportError:无法导入名称 xmlrpc_client
【发布时间】:2016-06-09 03:12:13
【问题描述】:

我正在尝试在 Mac OS X EI 上使用 scrapy,并且我已经成功安装了 scrapy

pip install scrapy

在终端中。 之后在Pycharm中尝试“导入scrapy”时遇到了上述问题:

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

我现在该怎么办? google了很久,现在真的不知道了。

【问题讨论】:

  • 最后一个rm 问题可能是由 El Capitan 的 SIP“功能”引起的。禁用它应该允许您访问文件,但我不确定这对您原来的问题有帮助。
  • 这是一个系统完整性保护stackoverflow.com/questions/32659348/…

标签: python macos python-2.7 scrapy


【解决方案1】:

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

但为什么是new PythonHere's an good article 的问题。原因很容易找到。

为什么是virtualenv?您可以获得积分表here

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

让我们来做一个由 Scrapy 的贡献者之一的recommended way!查看 Mac OS X 部分:Using Homebrew to install new Python, updated your path variable, ...等。虽然她说使用virtualenv是可选的,但我在使用Scrapy时只能将ImportError: blahblah..留在自己的虚拟环境中。

【讨论】:

    【解决方案2】:

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

    sudo easy_install --upgrade six
    

    【讨论】:

    • 编辑您的答案——将代码写入代码标签。作为旁注,这可能更好地放在 cmets 框中 - 我认为这不是对 OP 的简明回答。
    【解决方案3】:

    Operation not permited 表示您无权删除它。尝试sudo rm 以超级用户身份将其删除。

    虽然理想情况下你不应该 rm 来自你的 python 的任何东西,尝试 pip uninstall six 代替。但是您仍然需要six,所以您不妨尝试通过pip install six --upgrade 升级它。

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

    【讨论】:

    • El Capitan 增加了 root 没有权限修改 /System、/bin、/etc、/usr(除了 /usr/local)的功能
    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2015-09-07
    • 2016-03-31
    • 2014-10-10
    • 2014-09-20
    • 2014-08-28
    相关资源
    最近更新 更多