我很难理解为什么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 Web服务和客户端Web站点.当我们从客户端向服务发出HTTP请求时,一次调用始终在socket.py中引发socket.error,在read中:
(104, 'Connection reset by peer')
当我使用wireshark收听时,"好"和"坏"的反应看起来非常相似:
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进行生产,连接重置已经消失.请参阅下面的答案,但我的建议是记录连接重置并重试.这将使您的服务器在开发模式下运行正常,并且可以稳定地投入生产.
我正在尝试使用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请求,但是我需要来自响应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()方法来做到这一点.
我试图导入模块,但我收到如下错误: -
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)
如何解决此错误?
当我在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 吗?
问候哈里
为什么我在运行使用Foursquare尝试使用OAuth的应用程序时出现此错误?
import httplib2
ImportError: No module named httplib2
Run Code Online (Sandbox Code Playgroud)
我已按照此处的说明在命令行上安装了httplib2并安装了$ python setup.py install
我错过了什么吗?谢谢
今天我遇到了一个有趣的问题.
我正在使用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 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"成功的帮助将不胜感激.谢谢.