【问题标题】:urllib.request and urllib2 both not workingurllib.request 和 urllib2 都不起作用
【发布时间】:2013-08-19 12:50:48
【问题描述】:

我正在尝试学习 Python,我正在尝试学习模块。我使用的 Python 版本是 Python 2.7.4。我试图学习的模块是 urllib。但是,每当我尝试运行下面的代码时,都会收到一个名为“无导入命名请求”的错误。代码如下。

import urllib.request

class App():
    def main(self):
        inp = raw_input('Please enter a string\n')
        print(inp)
        inp = input('Please enter a value\n')
        print(inp)

if __name__ == '__main__':
    App().main()

然后我尝试使用 urllib2。所以我把第一行改成了

import urllib2

然后它说'IndentationError:期望一个缩进块'。但是如果我写

import urllib

那么我没有收到任何错误。但是我无法使用该库的任何功能。

【问题讨论】:

    标签: python python-2.7 import module


    【解决方案1】:

    下面是python2.7的简单沙盒实现:

    import urllib
    
    def main():
        #one indentation level
        print urllib.urlopen("http://stackoverflow.com").read ()
    
    if __name__ == '__main__': main()
    

    如果此代码运行而您的代码没有运行,则问题不在于导入/使用 urllib。它使用 pthon2.7.4 在我的机器上运行。

    替代版本:

    from urllib import urlopen
    
    def main():
        #one indentation level
        print urlopen("http://stackoverflow.com").read ()
    
    if __name__ == '__main__': main()
    

    或者使用你的App-Class

    import urllib
    
    class App:
        def main(self):
            print urllib.urlopen("http://stackoverflow.com").read ()
    
    if __name__ == '__main__':
        App().main()
    

    【讨论】:

    • 文件名是urllib.py。有问题吗?
    • 为什么和我应该命名它?
    • 基本上你正在尝试导入自己。将其命名为您要导入的另一个模块的名称,例如 rhabarberkuchen.py
    • 非常感谢。感谢您的帮助。
    • 很高兴为您提供帮助。我的一位初级程序员落入了完全相同的陷阱,我们花了很长时间才发现错误,因为没有人期望他会像他使用的模块那样命名他的文件。
    【解决方案2】:

    urllib.request 适用于 Python 3。对于 Python 2,您需要这样做:

    from urllib import urlopen
    

    或使用urllib2 模块:

    from urllib2 import urlopen
    

    您不应该收到IndentationError,但您可能犯了一些小错误。

    【讨论】:

    • @eddard.stark 您能否编辑您的问题并在收到IndentationError 时告诉我确切的代码?
    • @eddard.stark 是的,pass 关键字缩进太多。
    • App().main() 也缩进了太多。
    • @Haidro,我没有收到第一个代码的任何缩进错误。我收到该代码的导入错误。我已经检查并仔细检查了第二个代码。那里没有缩进错误。 Ideone 只是显示错误。
    • 伙计们,我没有收到第一个代码的任何缩进错误。我收到该代码的导入错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2014-04-29
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多