'导入 x' 与“'从 x 导入 y' 和 '导入 x.y' ”

2023-12-06

我试过

from urllib import request 
mine = request.Request()

and

import urllib.request
mine = urllib.request.Request()

他们都工作得很好。但

import urllib
mine = urllib.request.Request()

gives me

AttributeError: 'module' object has no attribute 'request' 

考虑到 request 是 urllib 的一个属性,它不应该也起作用吗?如果不是,为什么前面的语句有效?我正在使用 python 3.4.3。


Python 在导入包时,不会导入该包的所有内容 - 它导入包的内容__init__.py文件。 (或者,至少看起来是这样。)

我刚刚对此做了一些测试,发现了以下内容:

>>> import urllib
>>> dir(urllib)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

如你看到的,request, error, parse, response, and robotparser不在那里。它只导入了__init__.py file.

因此,为了进一步测试,我看了一下tkinter.

Here is tkinter's folder: tkinter's Folder

因此,为了检验这个理论:__init__.py最初是可以访问的,以下是一些与 tkinter 相关的命令:

>>> import tkinter
>>> tkinter.font
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'tkinter' has no attribute 'font'
>>> tkinter.test
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'tkinter' has no attribute 'test'
>>> tkinter.test.support
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'tkinter' has no attribute 'test'
>>> dir(tkinter)
['ACTIVE', 'ALL', 'ANCHOR', 'ARC', 'BASELINE', 'BEVEL', 'BOTH', 'BOTTOM', 'BROWSE', 'BUTT', 'BaseWidget', 'BitmapImage', 'BooleanVar', 'Button', 'CASCADE', 'CENTER', 'CHAR', 'CHECKBUTTON', 'CHORD', 'COMMAND', 'CURRENT', 'CallWrapper', 'Canvas', 'Checkbutton', 'DISABLED', 'DOTBOX', 'DoubleVar', 'E', 'END', 'EW', 'EXCEPTION', 'EXTENDED', 'Entry', 'Event', 'FALSE', 'FIRST', 'FLAT', 'Frame', 'GROOVE', 'Grid', 'HIDDEN', 'HORIZONTAL', 'INSERT', 'INSIDE', 'Image', 'IntVar', 'LAST', 'LEFT', 'Label', 'LabelFrame', 'Listbox', 'MITER', 'MOVETO', 'MULTIPLE', 'Menu', 'Menubutton', 'Message', 'Misc', 'N', 'NE', 'NO', 'NONE', 'NORMAL', 'NS', 'NSEW', 'NUMERIC', 'NW', 'NoDefaultRoot', 'OFF', 'ON', 'OUTSIDE', 'OptionMenu', 'PAGES', 'PIESLICE', 'PROJECTING', 'Pack', 'PanedWindow', 'PhotoImage', 'Place', 'RADIOBUTTON', 'RAISED', 'READABLE', 'RIDGE', 'RIGHT', 'ROUND', 'Radiobutton', 'S', 'SCROLL', 'SE', 'SEL', 'SEL_FIRST', 'SEL_LAST', 'SEPARATOR', 'SINGLE', 'SOLID', 'SUNKEN', 'SW', 'Scale', 'Scrollbar', 'Spinbox', 'StringVar', 'TOP', 'TRUE', 'Tcl', 'TclError', 'TclVersion', 'Text', 'Tk', 'TkVersion', 'Toplevel', 'UNDERLINE', 'UNITS', 'VERTICAL', 'Variable', 'W', 'WORD', 'WRITABLE', 'Widget', 'Wm', 'X', 'XView', 'Y', 'YES', 'YView', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_cnfmerge', '_default_root', '_exit', '_flatten', '_join', '_magic_re', '_setit', '_space_re', '_splitdict', '_stringify', '_support_default_root', '_test', '_tkerror', '_tkinter', '_varnum', 'constants', 'getboolean', 'getdouble', 'getint', 'image_names', 'image_types', 'mainloop', 're', 'sys', 'wantobjects']

注意到mainloop in the dir回复,我检查了__init__.py- 果然,mainloop()在那里定义。

所以,为了回答你的问题,Python只加载urllib's __init__.py当你这样做时归档import urllib - not request.py.

edit:作为另一点,在dir(tkinter),其中定义了一些变量tkinter.constants, 并不是__init__.py。那是因为在tkinter's __init__.py,它导入tkinter.constants with from tkinter.constants import *.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

'导入 x' 与“'从 x 导入 y' 和 '导入 x.y' ” 的相关文章

  • 用户警告:MovieWriter ffmpeg 不可用

    尝试在 google colab 上制作动画 收到此警告 用户警告 MovieWriter ffmpeg 不可用 warnings warn MovieWriter s 不可用 writer did pip 安装 ffmpeg 标准化但没有
  • 使用 pycharm 进行交互式 shell 调试

    我是 PyCharm 新手 我已经使用 IDLE 很长时间了 在IDLE中执行脚本后使用Python对象非常方便 有没有办法在使用 PyCharm 与交互式 python shell 执行后使用脚本对象 例如 我们有一个 测试 项目 其中包
  • 使用组合时如何解决循环依赖?

    我遇到了如下所示的情况 其中每个类都需要另一个类 并且它创建了循环依赖关系 我在使用 ctypes 包装一些 C 代码时遇到了这种情况 已经有很多关于这个主题的帖子 但我发现它们没有帮助 我需要一些例子 Module A from B im
  • 表单输入框不显示

    我正在尝试使用 Django 显示一个简单的表单输入文本框 我正在亚马逊 AWS 上部署 该网站在不同的服务器 pythonanywhere 上运行良好 但在 AWS 上存在主要问题 具体来说 输入框没有被显示 我使用的模板如下 首页 ht
  • 为什么 takewhile() 会跳过第一行?

    我有一个这样的文件 1 2 3 TAB 1 2 3 TAB 我想将 TAB 之间的行作为块读取 import itertools def block generator file with open file as lines for li
  • python:如何检查一行是否为空行

    试图弄清楚如何编写一个 if 循环来检查一行是否为空 该文件有许多字符串 其中之一是一个空行 用于与其他语句分隔开 不是 我认为是一个回车符后面跟着另一个回车符 new statement asdasdasd asdasdasdasd ne
  • 调整pandas read_sql_query NULL值处理?

    当我做 from sqlalchemy import create engine import pandas as pd engine create engine sqlite conn engine connect conn execut
  • Python:像石英一样的事件调度程序[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 isdigit 表示浮点数?

    a raw input How much is 1 share in that company while not a isdigit print You need to write a number n a raw input How m
  • pyqt4窗口调整大小事件

    我正在使用 python3 和 pyqt4 我希望每次运行时都会运行一些代码QMainWindow已调整大小 我想要这样的东西 self window resized connect self resize but resized不是内置函
  • 如何将 MP3 音频文件读入 numpy 数组/将 numpy 数组保存到 MP3?

    有没有办法从 MP3 音频文件中读取 写入 MP3 音频文件numpy具有类似 API 的数组scipy io wavfile read https docs scipy org doc scipy 0 14 0 reference gen
  • python中的unicode错误[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在下面的代码中我收到错误mailSe
  • 在keras自定义损失中使用层输出

    我正在 Keras 中开发自定义损失函数 我需要第一层输出 我怎样才能取回它 def custom loss y true y pred cross K mean K binary crossentropy y true y pred ax
  • 如何让 IPython 按类别组织制表符补全的可能性?

    当一个对象有数百个方法时 制表符补全很难使用 通常 有趣的方法是由被检查对象的类而不是其基类定义或重写的方法 如何让 IPython 对其制表符完成可能性进行分组 以便首先检查对象的类中定义的方法和属性 然后是基类中的方法和属性 看起来像是
  • Python Sqlite3 获取 Sqlite 连接路径

    给定一个 sqlite3 连接对象 如何检索 sqlite3 文件的文件路径 The Python 连接对象 http github com python cpython blob master Modules sqlite connect
  • Django ImageField 默认值

    模型 py class UserProfile models Model photo models ImageField upload to get upload file name storage OverwriteStorage def
  • 如何使用Python3.4在tornado中进行异步mysql操作?

    我现在使用Python3 4 我想在Tornado中使用异步mysql客户端 我已经发现torndb https github com bdarnell torndb但在阅读其源代码后 我认为它无法进行异步mysql操作 因为它只是封装了M
  • 在 Python 中,如果我有 unix 时间戳,如何将其插入 MySQL 日期时间字段?

    我正在使用 Python MySQLDB 我想将其插入 Mysql 中的 DATETIME 字段 我该如何使用cursor execute 来做到这一点 要将 UNIX 时间戳转换为 Python 日期时间对象 请使用datetime fr
  • python webdriver_manager chrome 自定义配置文件

    如何使 webdriver manager chrome 使用自定义 chrome 用户配置文件 我知道对于 selenium webdriver 我可以这样指定 options Options options add argument f
  • pandas - 组合行的字符串

    我有一个像这样的数据框 id text 1 DM HTN Enlarged prostate 2 hypertensive and on regular treatment 2 LBP 3 DM HTN Enlarged prostate

随机推荐

  • 用于将重复行插入另一个表的插入触发器之前

    我有一张桌子叫tblspmaster其中 sp 列我有唯一索引 因此不会插入重复项 但我想将重复行插入到tblspduplicate 所以我决定为此编写触发器 IN 主表是tblspmaster记录将使用加载文件插入mysql create
  • 条形图上的错误栏

    我试图得到 一个漂亮的组条形图 我希望每个条形上都有误差条 如下所示 或类似的 由您自行决定 我有办法 ff Medical eq Patient Hygiene Near bed Far bed Direct 1 2759 0 9253
  • 为什么我的 XML 阅读器读取所有其他元素?

    我构建了一个非常简单的表格 显示 4 列和 4 行 执行以下代码时 它会显示 xml 文件中的所有其他元素 它不区分每个表行 它读起来没有任何问题 而且我已经运行了 xml 验证器 所以这不是语法问题 public partial clas
  • 什么时候需要条件变量,互斥锁还不够吗?

    我确信互斥锁还不够 这就是条件变量概念存在的原因 但这让我很困惑 当条件变量至关重要时 我无法用具体的场景说服自己 条件变量 互斥锁和锁之间的区别问题的接受答案说条件变量是 带有 信号 机制的锁 当线程需要时使用它 等待资源变得可用 线程可
  • FFMPEG 链接错误

    我正在尝试编译此版本的修改版本来自 FFMPEG 站点的转码示例 我已经使用了所有必需的包含并使用此加入了库 INCLUDEPATH FFMPEG DEV PATH include LIBS L FFMPEG DEV PATH lib la
  • 无论如何,我可以突出显示 JTable 中的一行吗?

    我目前正在使用 JTable 和 DefaultTableModel 构建数据库 在我的程序中我 具有允许用户搜索数据库的功能 我已经构建了搜索部分 但没有 知道如何突出显示 JTable 中的行或单元格 有人可以帮帮我吗 谢谢 您确定要突
  • PHP 访问数组值[重复]

    这个问题在这里已经有答案了 我正在尝试访问我创建的数组的值 但似乎失败了 我正在循环发送 VIA http 的数组 并添加docno and entryno到名为的新数组 ArrID 它可以添加到新数组中 但是当我尝试访问ArrID似乎没有
  • Sequelize 连接模型包括多对多

    假设我有三个这样的模型 var User define user username Sequelize INTEGER var UserPubCrawl define userpubcrawl user id Sequelize STRIN
  • Python中重新赋值会从内存中删除之前的值吗?

    gt gt p 5 gt gt id p 140101523888800 gt gt p 5 56 gt gt id p 140100617985840 我知道将新值分配给现有变量时 它指向内存中存储新值的新位置 但我的问题是 包含先前值的
  • selenium python 中 find_element_by_class_name 的属性是什么?

    browser webdriver Firefox browser get url divs browser find elements by class name class browser find element by class n
  • 使用 C 中的 regex.h 计算匹配数

    我正在使用 POSIX 正则表达式regex h用 C 语言计算英语文本片段中短语出现的次数 但返回值是regexec 只告诉是否找到匹配项 所以我尝试使用nmatch and matchptr找到不同的外观 但是当我打印出匹配项时matc
  • 为什么值类型没有出现默认构造函数?

    下面的代码片段给了我一个类型的构造函数和方法的列表 static void ReflectOnType Type type Console WriteLine type FullName Console WriteLine List
  • 寻找带有复选框的 WPF ComboBox

    我的谷歌技能让我失败了 任何人都听说过 WPF 这样的控件 我试图让它看起来像这样 winforms 屏幕截图 您可以通过设置组合框的 DataTemplate 自行完成此操作 本文向您展示了如何操作 对于列表框 但原理是相同的 另一篇文章
  • JQuery UI Accordion 无法处理 AJAX 加载的内容

    我正在尝试动态加载产品信息页面 该页面有一个手风琴菜单供用户浏览 单击按钮后 我使用 AJAX 动态引入手风琴的内容 手风琴的 HTML 以其应有的方式显示 但手风琴 方法 未执行以将内容修改为手风琴 Imports
  • 控制到达非 void 函数的末尾

    以下代码片段在编译时会生成一些警告消息 Cluster Myclass getCluster const Point p foreach Cluster c this foreach Point point c if point p ret
  • 使用 EclipseLink JPA 将 XML 类型存储到 PostgreSQL

    我是 JPA 新手 我有一个关于如何使用 JPA 将 XML 类型存储到 PostgreSQL 的问题 我只是扩展现有的 POJO 以将附加的 XML 字段保留到列中 POJO 看起来像这样 我故意省略了一堆其他列以使其更短 在添加这个额外
  • 用图像替换 x 轴刻度标签

    我正在绘制一个散点图 展示所有 NFL 球队的防守 我想在底部轴上显示他们的图像 而不是纯文本中的他们的名字 可以这样做吗 这是我能想到的代码片段 fig px scatter df x defensiveTeam y passResult
  • 使用 Lambda 或 LINQ 将一个类实例转换或映射到另一个类实例的列表?

    我有以下两个课程 class MyData public List
  • 打印出 ASCII 圆和轴

    该程序在笛卡尔平面上打印一个圆 输入是 半径 圆心坐标 cx cy 以及我们要用来打印圆的字符 如果圆上的点与轴重叠 则该点优先 我在方法中编写了打印轴的条件drawCircle 但是图像扭曲了 有些事情让我困惑 有人可以帮助我找出我的错误
  • '导入 x' 与“'从 x 导入 y' 和 '导入 x.y' ”

    我试过 from urllib import request mine request Request and import urllib request mine urllib request Request 他们都工作得很好 但 imp