Scrapy抛出ImportError:无法导入名称xmlrpc_client

时间:2015-06-21 13:06:56

标签: python python-2.7 scrapy

通过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
>>> 

发生了什么事?

6 个答案:

答案 0 :(得分:71)

我刚刚在我的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)

答案 1 :(得分:32)

这是Mac OSX for 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

如果这些都不起作用,请查看上面的链接。

答案 2 :(得分:18)

升级到Scrapy 1.0时,我遇到了同样的问题。经过无数次解决后,对我有用的解决方案是用pip卸载6个:

  

sudo pip uninstall six

然后通过easy_install重新安装六个

  

easy_install六

希望有效!

答案 3 :(得分:5)

最好降级Scrapy以升级你的六个版本:

pip install --upgrade six scrapy

这将允许您使用来自Scrapy 1.0的所有好东西;)

答案 4 :(得分:3)

我遇到了同样的问题。试试这个:

sudo pip uninstall scrapy

sudo pip install scrapy == 0.24.2

然后试一试

答案 5 :(得分:1)

我认为OS X的最佳解决方案应该是“不要使用系统python”。它会让生活更轻松。 This link显示了如何执行此操作。

  

有一个已知问题阻止pip更新系统包。必须解决这个问题才能成功安装Scrapy及其依赖项。以下是一些建议的解决方案:

     

(推荐)不要使用系统python,安装一个与系统其他部分不冲突的新版本。以下是使用自制软件包管理器的方法:

     
      
  1. 按照http://brew.sh/
  2. 中的说明安装自制软件   
  3. 更新您的PATH变量以声明应在系统软件包之前使用自制软件包(如果您使用zsh作为默认shell,则将.bashrc更改为.zshrc):
  4.         

    echo“export PATH = / usr / local / bin:/ usr / local / sbin:$ PATH”&gt;&gt;的〜/ .bashrc

         
        
    1. 重新加载.bashrc以确保已进行更改:
    2.         

      source~ / .bashrc

           
          
      1. 安装python:
      2.         

        brew install python

             
            
        1. 最新版本的python将pip与它们捆绑在一起,因此您无需单独安装它。如果不是这种情况,请升级python:
        2.         

          brew更新; brew升级python