Python请求ImportError:无法导入名称HeaderParsingError

时间:2015-10-07 07:50:55

标签: python python-2.7 python-requests urllib3

操作系统:Mac OS X.当我尝试运行下面的代码时,我收到错误:

  

ImportError:无法导入名称HeaderParsingError

我在代码下方附加了回溯。

我已经尝试使用Google和其他stackoverflow解决此问题20分钟了。我试过跑:

  

pip install urllib3 --upgrade

我也尝试重新安装请求包。

没有用。

这似乎是我的请求或urllib3包的问题。有人有过类似的问题吗?

代码:

fn main() {
    let mut i1;
    let mut i2;
    let mut input: &mut Read = match Some("file-from-parser.txt") {
        Some(ifname) => {
            i1 = BufReader::new(File::open(ifname).unwrap());
            &mut i1
        }
        None => {
            i2 = io::stdin();
            &mut i2
        }
    };

    rc4(&[1, 2, 3], input, &mut io::stdout());
}

这是追溯:

import requests
import json


def printResponse(r):
print '{} {}\n'.format(json.dumps(r.json(), sort_keys=True, indent=4,    separators=(',', ': ')), r)


r = requests.get('http://wikitest.orcsoftware.com/rest/api/content',
             params={'title': 'new page'},
             auth=('seb', '****'))
printResponse(r)
parentPage = r.json()['results'][0]
pageData = {'type': 'comment', 'container': parentPage,
        'body': {'storage': {'value': "<p>A new comment</p>", 'representation': 'storage'}}}
r =    requests.post('http://localhost:8080/confluence/rest/api/content',
              data=json.dumps(pageData),
              auth=('admin', 'admin'),
              headers=({'Content-Type': 'application/json'}))
printResponse(r)

3 个答案:

答案 0 :(得分:18)

urllib3requests/packages子目录中附带了自己的requests库副本。 此副本以某种方式被破坏。

重新安装from .packages import charade as chardet本身;要么升级(最多September 2014,给定pip行),要么重新安装现有版本。

使用--force-reinstall开关重新安装pip install --force-reinstall requests==2.1.0

pip install --upgrade requests

或强制升级:

function loopl(){
    $('.mCSB_container').animate({ "left": "+=80px" }, "800", 'linear', loopl  );
    }    

function loopr(){
        $('.mCSB_container').animate({ "left": "-=80px" }, "800", 'linear', loopr  );
    }
    function stop(){
        $('.mCSB_container').stop();
    }
    $( "#left" ).hover(loopl, stop);
    $( "#right" ).hover(loopr, stop);

答案 1 :(得分:2)

当我只是尝试使用pip创建任何命令时,我遇到了同样的问题。最后我发现了一个非常简单的解决方案,只需在 pip 之前使用 sudo

特别针对上述问题,我使用了以下命令。

sudo pip install --upgrade urllib3

希望这会有所帮助。

答案 2 :(得分:1)

urllib3 ”包本身可能存在问题。卸载/安装将解决此问题。

sudo pip uninstall urllib3
sudo pip install --upgrade urllib3

就我而言,错误是:

  

ImportError:无法导入名称UnrewindableBodyError

另一个问题可能是,通过 pip 安装了 urllib3 ,并且通过 yum 回购安装了请求,或相反亦然。在这种情况下,解决方法是完全删除这些库并通过相同的存储库进行安装。

我建议您在yum上点一下以安装这两个软件包,因为它易于维护并且可以提供更多控制。操作系统补丁或VM维护活动等所需的任何进一步的yum更新,都不会影响通过pip安装的软件包。

首先通过pip和yum删除“ urllib3 ”和“ 请求”的所有安装:

sudo pip uninstall urllib3 -y
sudo pip uninstall requests -y
sudo yum remove python-urllib3 -y
sudo yum remove python-requests -y

要使用单一安装源,请使用以下任一步骤,而不要同时使用这两个步骤。

现在仅通过pip安装两个软件包:

sudo pip install --upgrade urllib3
sudo pip install --upgrade requests

或者,仅使用yum。如上所述,我更喜欢点而不是百胜。

仅通过yum安装两个软件包:

sudo yum install python-urllib3
sudo yum install python-requests

注意:在操作系统级别进行yum更新时,请始终使用虚拟环境来避免冲突。