免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4441 | 回复: 9
打印 上一主题 下一主题

新手玩python偶遇坑爹错误,求开导 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-25 15:43 |只看该作者 |倒序浏览
由于标准库的urllib/urllib2比较弱,所以安装了requests开源库。
我在IDIL里测试完全朩有没问题,写成脚本用python命令运行就
报如下错误,重装requests,及python都没有搞头。

Traceback (most recent call last):
  File "/Users/Eric/Desktop/requests.py", line 9, in <module>
    r = requests.get("http://www.baidu.com")
AttributeError: 'module' object has no attribute 'get'
[Finished in 0.0s with exit code 1]

死活没有找到原因,郁闷。测试代码很简单,如下

import sys
import requests

reload(sys)
sys.setdefaultencoding('utf-8')


if __name__ == '__main__':
    r = requests.get("http://www.baidu.com")
    print r.headers

各位亲,知道原因讲一下哈,谢谢~



论坛徽章:
0
2 [报告]
发表于 2013-09-25 16:54 |只看该作者
把文件名改了再说执行吧

论坛徽章:
0
3 [报告]
发表于 2013-09-25 16:56 |只看该作者
requests.get(url, **kwargs)
Sends a GET request. Returns Response object.

Parameters:       
url – URL for the new Request object.
**kwargs – Optional arguments that request takes.

我找到的範例是用單引號也,你要不要試試看!( 其實我也知道,來亂的!

论坛徽章:
0
4 [报告]
发表于 2013-09-25 17:16 |只看该作者
从你的:
/Users/Eric/Desktop/requests.py
猜测:
python搜索模块的方式,估计是优先从你当前文件夹搜的。
如果是这样的话:
python先从你当前文件夹:
/Users/Eric/Desktop/
找到了requests模块,即你的:
/Users/Eric/Desktop/requests.py
而你此处的
/Users/Eric/Desktop/requests.py
中,只是几行测试代码,啥都没有。
所以,就报错,说requests中没有get。

验证方法:
把你当前的
/Users/Eric/Desktop/requests.py
中,故意加上一个空的get函数,比如:
  1. def get(url)
  2.     print "in get, url=",url
复制代码
然后:
如果此时,程序可以运行,且能打印出上述信息,则说明:我上面的猜测是对的。

此时:
再去把你的:
/Users/Eric/Desktop/requests.py
改名,比如改为:
/Users/Eric/Desktop/requestsTest.py
再去运行,则肯定就可以了。

另外:
不论此处错误的原因是否是我上面的推测的原因
你此处的:
/Users/Eric/Desktop/requests.py
中都不是好的做法,即:
打算去测试某个模块,结果python文件名:
requests.py
却起成和模块名同样的名字:
requests
这样的做法,本身就是不推荐的,
甚至可以说是:很不好的习惯

所以,建议:
无论是否是此原因出错
今后,做类似的事情之前,
都尽量要有个更好的习惯
这样,不论是写代码,还是做其他事情,
最终都会让你自己体会到:使得做事情的效率更高,效果更好。

个人意见,仅供参考。

论坛徽章:
0
5 [报告]
发表于 2013-09-25 17:35 |只看该作者
思路清晰,一针见血。回复 4# crifan


   

论坛徽章:
0
6 [报告]
发表于 2013-09-25 22:08 |只看该作者
谢谢各位亲及时回复,我试试看先~

论坛徽章:
0
7 [报告]
发表于 2013-09-25 22:21 |只看该作者
果然是这个问题,谢谢楼上各位亲,好人一生平安~

P.S. 4楼你太cool了,膜拜传道解惑的高手

论坛徽章:
0
8 [报告]
发表于 2013-10-10 12:27 |只看该作者
这个问题新手经常遇到,我当初刚开始的时候也经常这样犯错

论坛徽章:
0
9 [报告]
发表于 2013-10-10 13:49 |只看该作者
如果有些基本概念不清楚,后续开发,必然不是这个错误就是那个错误。
所以,有需要的,可以去看我的教程,其中包括,初级,中级,高级方面的内容:
已发布的Python的相关资料

论坛徽章:
0
10 [报告]
发表于 2013-10-10 22:28 |只看该作者
本帖最后由 laike9m 于 2013-10-10 22:29 编辑

补充一下,模块的搜索路径是
  1. 1. 程序主目录
  2. 2. PYTHONPATH目录
  3. 3. 标准链接库目录
  4. 4. 任何.pth文件的内容
复制代码
因为主目录搜索优先级最高,所以导入了其中的requests.py。
如果你仍然想把自己的脚本叫requests.py,那就只能去改sys.path了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP