在Python 3.5中导入urllib

在Python 3.5中导入urllib,python,urllib,Python,Urllib,我有以下代码: import urllib import wget as wget request = urllib.request.Request(url) 对于最后一行,PyCharm显示警告: 在“\uuuu init\uuuuuu.py”中找不到引用“request” 虽然代码很有效,但我从我查询的服务器收到了一个回复 导入import wget as wget显示为未使用。删除该导入时,在运行时会出现以下异常: AttributeError:模块“urllib”没有属性“reques

我有以下代码:

import urllib
import wget as wget
request = urllib.request.Request(url)
对于最后一行,PyCharm显示警告:

在“\uuuu init\uuuuuu.py”中找不到引用“request”

虽然代码很有效,但我从我查询的服务器收到了一个回复

导入
import wget as wget
显示为未使用。删除该导入时,在运行时会出现以下异常:

AttributeError:模块“urllib”没有属性“request”

谁能给我解释一下吗

  • 这两件事是如何联系在一起的
  • 为什么
    urllib.request.request
    显然是错误的(?)

  • 因为请求是一个子模块,所以必须编写其名称,以便Python也将其导入

    导入URL库请求


    理由:

    如果您有一个包含许多子模块的模块,那么加载所有子模块可能是一件昂贵的事情,并且可能会产生与您的程序无关的问题

    假设有一个名为
    urllib.foo
    的模块,它只在Windows上工作,而您正在Linux上工作。如果导入系统要导入所有子模块,即使您不想使用它,它也可能会在您的系统上崩溃


    您正在使用的
    wget
    模块将导入
    urllib.request
    以供自身使用,因此python将缓存其导入,并且它将成为
    urllib
    对象的一部分。

    因为request是一个子模块,您必须写入其名称,以便python也将其导入

    导入URL库请求


    理由:

    如果您有一个包含许多子模块的模块,那么加载所有子模块可能是一件昂贵的事情,并且可能会产生与您的程序无关的问题

    假设有一个名为
    urllib.foo
    的模块,它只在Windows上工作,而您正在Linux上工作。如果导入系统要导入所有子模块,即使您不想使用它,它也可能会在您的系统上崩溃


    您正在使用的
    wget
    模块将导入
    urllib.request
    以供自身使用,因此python将缓存其导入,并且它将是
    urllib
    对象的一部分。

    urllib
    本身不会导入
    urllib.request
    。模块
    wget
    可能执行
    导入urlib.request
    。从那以后,
    urllib.request
    实际上是可引用的


    建议的解决方案:编写
    import-urllib.request
    ,然后在没有
    import-wget

    urllib
    本身不导入
    urllib.request
    的情况下,它应该可以工作。模块
    wget
    可能执行
    导入urlib.request
    。从那以后,
    urllib.request
    实际上是可引用的

    建议的解决方案是:编写
    importurllib.request
    ,然后在没有
    importwget
    的情况下,它应该可以工作