V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xduanx
V2EX  ›  程序员

小弟萌新,请教下大佬,这三行 Python 代码有问题么,为什么报错说 module' object has no attribute 'Request'

  •  
  •   xduanx · 2019-09-13 22:13:43 +08:00 · 2560 次点击
    这是一个创建于 1899 天前的主题,其中的信息可能已经有所发展或是发生改变。

    描述

    很奇怪,有时候不报错,有时候报错,今天一直无法运行通过,前几天还好好的呢

    小弟网上查了一圈,基本上给的方法就是 import urllib2.Request

    但这样在 import 时,ide 就给出错误提示了

    环境

    ide:PyCharm 2019.2.2 (Community Edition)

    python:Python 2.7.15+

    OS:Ubuntu 18.04.2 LTS

    截图

    ![code and error]( https://imgchr.com/i/ns3bjg ''code and error'')

    7 条回复    2019-09-14 18:08:07 +08:00
    xduanx
        1
    xduanx  
    OP
       2019-09-13 22:31:01 +08:00 via iPhone
    小弟在 ipython 下运行没有问题;
    直接在系统里执行 python2.7 ssl.py 报同样错误;
    下午一直在学习爬虫,一直没问题,准备在吃饭前试下 ssl 的,结果执行同样代码就遇到这个问题了。
    xiaxiaopa
        2
    xiaxiaopa  
       2019-09-13 22:34:43 +08:00
    把你的 ssl.py 重命名为 ssl1.py ,应该是这个问题吧,我也是萌新
    xduanx
        3
    xduanx  
    OP
       2019-09-13 22:58:10 +08:00
    @xiaxiaopa 感谢这位同为萌新的哥哥,果然好了
    同时我的另一个叫做 mm.py 的文件原来报同样的错,现在也可以正常运行了
    jakezh
        4
    jakezh  
       2019-09-13 22:59:52 +08:00
    看一下用的是什么 interpreter
    xduanx
        5
    xduanx  
    OP
       2019-09-13 23:08:26 +08:00
    @jakezh
    解析器
    Name: Python 2.7 (spider_1)
    Interpreter path: /home/cloud/PycharmProjects/spider_1/venv/bin/python
    cherbim
        6
    cherbim  
       2019-09-14 16:02:07 +08:00
    此时一位半萌新低调路过,友情提示一定要注意命名,
    urllib2 里会自动 import ssl,你的项目名字是 ssl.py ,默认不会 import 标准库里的 ssl,会 import 你的项目,然后你的项目里没有 Request,所以就出现了 no attribute “Request”
    veightz
        7
    veightz  
       2019-09-14 18:08:07 +08:00
    这个是 python 的一个大坑。。。取名要小心,除了 ssl 外,http,request 之类的通用名词都要避开,以免屏蔽了标准库或者三方库
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5381 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:54 · PVG 13:54 · LAX 21:54 · JFK 00:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.