标签: httplib2

安装后,"ImportError:没有名为httplib2的模块"

我很难理解为什么ImportError: No module named httplib2在确保安装httplib2之后我会得到.见下文:

$ which -a python
/usr/bin/python
/usr/local/bin/python 

$ pip -V
pip 1.4.1 from /usr/local/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg (python 2.7

$ pip list
google-api-python-client (1.2)
httplib2 (0.8)
pip (1.4.1)
pudb (2013.5.1)
Pygments (1.6)
setuptools (1.3.2)
wsgiref (0.1.2)

$ pip install httplib2
Requirement already satisfied (use --upgrade to upgrade): httplib2 in /usr/local/lib/python2.7/site-packages
Cleaning up...

$ python
Python 2.7.5 (default, Sep 12 2013, 21:33:34) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or …
Run Code Online (Sandbox Code Playgroud)

python pip httplib2 python-2.7

38
推荐指数
2
解决办法
6万
查看次数

104,'通过对等连接重置'套接字错误,或什么时候关闭套接字导致RST而不是FIN?

我们正在并行开发Python Web服务和客户端Web站点.当我们从客户端向服务发出HTTP请求时,一次调用始终在socket.py中引发socket.error,在read中:

(104, 'Connection reset by peer')

当我使用wireshark收听时,"好"和"坏"的反应看起来非常相似:

  • 由于OAuth标头的大小,请求将分为两个数据包.该服务用ACK响应
  • 服务发送响应,每个标头一个数据包(HTTP/1.0 200 OK,然后是Date标头等).客户端使用ACK响应每个客户端.
  • (好请求)服务器发送FIN,ACK.客户端以FIN,ACK响应.服务器响应ACK.
  • (错误请求)服务器发送RST,ACK,客户端不发送TCP响应,socket.error在客户端引发.

Web服务和客户端都运行在运行glibc-2.6.1的Gentoo Linux x86-64机器上.我们在同一个virtual_env中使用Python 2.5.2.

客户端是一个Django 1.0.2应用程序,它调用httplib2 0.4.0来发出请求.我们使用OAuth签名算法对请求进行签名,OAuth令牌始终设置为空字符串.

该服务正在运行Werkzeug 0.3.1,它使用的是Python的wsgiref.simple_server.我通过wsgiref.validator运行WSGI应用程序,没有任何问题.

看起来这应该很容易调试,但是当我在服务端追踪一个好的请求时,它看起来就像是一个错误的请求,在socket._socketobject.close()函数中,将委​​托方法转换为虚方法.当send或sendto(不记得哪个)方法关闭时,FIN或RST被发送,客户端开始处理.

"由同行重置连接"似乎将责任归咎于服务,但我也不信任httplib2.客户可以有错吗?

**进一步调试 - 看起来像Linux上的服务器**

我有一台MacBook,所以我尝试在一台服务器和另一台客户端网站上运行服务.Linux客户端调用OS X服务器而没有错误(FIN ACK).OS X客户端使用错误调用Linux服务(RST ACK和a(54,'由peer重置连接')).所以,看起来它是在Linux上运行的服务.是x86_64吗?一个坏的glibc?的wsgiref?还在寻找...

**进一步测试 - wsgiref看起来很脆弱**

我们已经使用Apache和mod_wsgi进行生产,连接重置已经消失.请参阅下面的答案,但我的建议是记录连接重置并重试.这将使您的服务器在开发模式下运行正常,并且可以稳定地投入生产.

python sockets wsgi werkzeug httplib2

32
推荐指数
3
解决办法
12万
查看次数

如何指定python请求http put body?

我正在尝试使用requests模块重写一些旧的python代码.目的是上传附件.邮件服务器需要以下规范:

https://api.elasticemail.com/attachments/upload?username=yourusername&api_key=yourapikey&file=yourfilename
Run Code Online (Sandbox Code Playgroud)

有效的旧代码:

h = httplib2.Http()        
        resp, content = h.request('https://api.elasticemail.com/attachments/upload?username=omer&api_key=b01ad0ce&file=tmp.txt', 
        "PUT", body=file(filepath).read(), 
        headers={'content-type':'text/plain'} )
Run Code Online (Sandbox Code Playgroud)

没有找到如何在请求中使用正文部分.

我设法做了以下事情:

 response = requests.put('https://api.elasticemail.com/attachments/upload',
                    data={"file":filepath},                         
                     auth=('omer', 'b01ad0ce')                  
                     )
Run Code Online (Sandbox Code Playgroud)

但不知道如何使用文件内容指定正文部分.

谢谢你的帮助.奥马尔.

python http put httplib2 python-requests

29
推荐指数
2
解决办法
7万
查看次数

如何使用请求库从http请求中获取IP地址?

我正在使用python中的请求库发出HTTP请求,但是我需要来自响应http请求的服务器的ip地址,并且我试图避免进行两次调用(并且可能有一个不同的ip地址来自响应的那个请求.

那可能吗?有没有python http库允许我这样做?

ps:我还需要发出HTTPS请求并使用经过身份验证的代理.

更新1:

例:

import requests

proxies = {
  "http": "http://user:password@10.10.1.10:3128",
  "https": "http://user:password@10.10.1.10:1080",
}

response = requests.get("http://example.org", proxies=proxies)
response.ip # This doesn't exist, this is just an what I would like to do
Run Code Online (Sandbox Code Playgroud)

那么,我想知道从响应中的方法或属性连接的IP地址请求.在其他库中,我能够通过找到sock对象并使用getpeername()方法来做到这一点.

python pycurl httplib2 httplib python-requests

19
推荐指数
1
解决办法
3万
查看次数

Python:找不到Httplib2模块

我试图导入模块,但我收到如下错误: -

sh-3.2# python -V
Python 2.6.4
sh-3.2# python -c "import httplib2"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named httplib2
Run Code Online (Sandbox Code Playgroud)

如何解决此错误?

python httplib2

18
推荐指数
4
解决办法
5万
查看次数

Frappe 安装错误“AttributeError:模块‘pyparsing’没有属性‘downcaseTokens’”

当我在Linux上安装frappe(版本13)时

当我跑步时bench init

它给出了一个错误

错误:httplib2 0.20.1 有要求 pyparsing<3,>=2.4.2,但您将拥有不兼容的 pyparsing 3.0.0。

尽管安装完成了。

之后,当创建新站点时,会出现错误

AttributeError:模块“pyparsing”没有属性“downcaseTokens”

这是一个已弃用的函数,在 3.0 版本中不可用,但在 2.4.2 版本中可用

我该如何解决这个问题?我可以强制安装早期版本的 pyparsing 吗?

问候哈里

httplib2 frappe

15
推荐指数
1
解决办法
1万
查看次数

在Python Appengine上使用Httplib2

为什么我在运行使用Foursquare尝试使用OAuth的应用程序时出现此错误?

import httplib2
ImportError: No module named httplib2
Run Code Online (Sandbox Code Playgroud)

我已按照此处的说明命令行上安装了httplib2并安装了$ python setup.py install

我错过了什么吗?谢谢

python google-app-engine oauth httplib2 foursquare

11
推荐指数
1
解决办法
8766
查看次数

如何在Python中关注元刷新

Python的urllib2遵循3xx重定向来获取最终内容.有没有办法使urllib2(或其他一些库,如httplib2)也遵循元刷新?或者我是否需要手动为刷新元标记解析HTML?

python redirect refresh urllib2 httplib2

10
推荐指数
3
解决办法
8269
查看次数

Httplib2 ssl错误

今天我遇到了一个有趣的问题.

我正在使用foursquare推荐的python库httplib2 raise

SSLHandshakeError(SSLError(1, '_ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed'),) 
Run Code Online (Sandbox Code Playgroud)

在尝试请求oauth令牌时

response, body = h.request(url, method, headers=headers, body=data)
Run Code Online (Sandbox Code Playgroud)

_process_request_with_httplib2 function
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

python httplib2 foursquare

10
推荐指数
2
解决办法
2万
查看次数

ImportError:没有名为httplib2的模块

我有一个Python 2.7 GAE应用程序,它已经具有很多功能.现在我想要与Google API集成.

在我在Mac OSX上运行的IDE(PyCharm)中,我将以下行添加到我的应用程序的主程序中:

import httplib2
pass
Run Code Online (Sandbox Code Playgroud)

当我命令单击"httplib2"时,IDE 在编辑器面板中打开"httplib2-0.8-py2.7.egg/httplib2/init.py ",因此IDE显然知道httplib2在哪里.但运行应用程序,我得到标题中显示的错误.

为了进一步测试,我在上面显示的两个语句上放置了断点,然后在调试模式下运行应用程序.当它到达import语句时,我立即单击"Resume Program"图标.

然后控制台显示:

ImportError: No module named httplib2
Run Code Online (Sandbox Code Playgroud)

程序然后循环.也就是说,它不会终止,但它永远不会到达"通过"语句.

所以IDE似乎知道"httplib2"在哪里,但Python似乎并不存在.任何有关如何"导入httplib2"成功的帮助将不胜感激.谢谢.

python google-app-engine httplib2 importerror

8
推荐指数
1
解决办法
8480
查看次数