导入在 __init__.py 中声明的对象

2024-01-31

我无法理解“__init__.py”中声明的对象如何/应该导入到其他文件中。

我有一个像这样的目录结构

top/
 |
 |_lib/
    |_ __init__.py
    |_ one.py

文件内容如下

lib/__init__.py

a=object()

库/one.py

from lib import a

问题就在这里。如果我从top目录下,以下命令运行良好

>>> from lib.one import a

但是如果我将目录更改为top/lib并在新的 python shell 中触发类似的命令,我收到错误。

>>>  from one import a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "one.py", line 1, in <module>
  from lib import a
ImportError: No module named lib

当然,我可以改变one.py像这样,这将使一切正常。

from __init__ import a

但我真的很想理解,为什么导入命令可以从top目录而不是来自top/lib.

Thanks.


一般来说,我认为最好的做法是让数据漏斗达到__init__.py来自模块/子包,而不需要依赖来自的数据__init__.py在周围的模块中。换句话说,__init__.py可以使用one.py, but one.py不应该使用数据/函数__init__.py.

现在,针对你的问题...

它适用于top因为 python 执行相对导入(在 python3.x IIRC 中已消失,所以不要依赖它;-)。换句话说,python 在当前目录中查找模块或包名称lib然后它导入它。到目前为止一切都很好。跑步from lib.one import a首次进口lib (__init__.py)效果很好。然后它导入one -- lib仍然可以正常导入one因为它是相对于当前工作目录的——而不是相对于源文件。

当您搬进lib目录,python再也找不到了lib在当前目录中,使其不可导入。请注意,对于大多数软件包,这是通过安装软件包来解决的,该软件包将其放置在 python 可以找到它的位置,而无需将其放在当前目录中。

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

导入在 __init__.py 中声明的对象 的相关文章

  • 为什么Python有最大递归深度?

    Python有最大递归深度 但没有最大迭代深度 为什么递归受到限制 把递归当成迭代来对待 而不限制递归调用的次数不是更自然吗 我只想说这个问题的根源来自于尝试实现流 参见这个问题 https stackoverflow com questi
  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • Selenium Webdriver - Python - leboncoin - pb 选择带重音的按钮

    我正在尝试在以下网站上自动填写表格 https www leboncoin fr https www leboncoin fr 我用 Selenium IDE 录制了一个脚本 我有一个通过单击 Se 连接器 按钮并填写我的密码和用户名来自动
  • Pandas Pivot_Table :非数字值的行计算百分比

    这是我在数据框 df 中的数据 Document Name Time SPS2315511 A 1 HOUR SPS2315512 B 1 2 HOUR SPS2315513 C 2 3 HOUR SPS2315514 C 1 HOUR S
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 如何在matplotlib中基于x轴更改直方图颜色

    我有根据 pandas 数据框计算出的直方图 我想根据 x 轴值更改颜色 例如 If the value is 0 the color should be green If the value is gt 0 the color shoul
  • 有没有任何方法可以使用 openpyxl 获取 .xlsx 工作表中存在的行数和列数?

    有没有任何方法可以使用 openpyxl 获取 xlsx 工作表中存在的行数和列数 在xlrd中 sheet ncols sheet nrows 将给出列数和行数 openpyxl中有这样的方法吗 给定一个变量sheet 可以通过以下方式之
  • 为 Python 2.4 改进“with”语句的直接替换

    您能否建议一种方法来编写可在 Python 2 4 中使用的 with 语句的直接替换代码 这将是一个 hack 但它可以让我更好地将我的项目移植到 Python 2 4 EDIT 删除了不相关的元类草图 只需使用 try finally
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 如何使用数据库在 Django 中的应用程序之间交换数据?

    我正在使用 Django 在网络上工作 我创建了 2 个应用程序 第一个用于客户端注册并将其数据添加到数据库 第二个应用程序供用户访问和查看交互界面 这个想法是使用第二个应用程序从数据库中的客户端获取数据 并使用它向用户显示一些信息 我的问
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • django 组合对两个不同基本模型的查询

    我有两个不同的查询集 我想将两个查询集合并 q1 tbl nt 123 objects values list id value geometry filter restriction height exclude condition id
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐

  • 如何获取用户控件数据类型所在的TabPage

    我正在使用用户控件包装器方法构建自定义数据类型 我在其中添加现有的 TinyMCE 数据类型 问题是我需要找到一种方法来动态获取数据类型所在的当前 TabPage 以便我可以将 TinyMCE 按钮添加到菜单中 这就是我目前所拥有的 Tab
  • 使用 Ajax 和 PHP $_FILES 从 Canvas 元素发送图像

    我需要能够将图像和一些表单字段从客户端画布元素发送到 PHP 脚本 最终以 POST 和 FILES 结束 当我这样发送时
  • 将 Haskell 线程与内核线程进行比较 - 我的基准测试可行吗?

    这实际上是我的大学项目 在我的文章中 我需要提供证据证明 Haskell 线程的创建速度比普通内核线程更快 我知道最好参考一些研究论文 但重点是我必须自己进行基准测试 这是我的想法 我用 C 使用 pthreads 和 Haskell 编写
  • 错误“HttpServletRequest 引用了缺失的 String 类型”

    我正在 struts 中实现一个项目 其中 JSP 页面出现错误 我已经在 Eclipse IDE 中配置了 Tomcat 6 JRE 和 JDK 6 代码是 request getContextPath 错误是 The method ge
  • PHP 依赖注入

    我正在尝试了解依赖注入 并且在很大程度上我理解它 然而 如果由于某种原因 我的一个类依赖于多个类 而不是将所有这些都传递给构造函数中的这个类 是否有更好 更明智的方法 我听说过 DI 容器 这是我解决这个问题的方法吗 我应该从哪里开始使用这
  • 使用 PHPExcel 读取包含合并单元格的 Excel 工作表

    我想完整地阅读 Excel 工作表并使用 AJAX 将每一行发送到另一个页面进行处理 因此 我使用以下代码将 Excel 工作表数据转换为 JSON 数组 参考库中提供的 PHPExcel 示例
  • 如何使一个方法可用于 Rails 中的控制器和模型?

    我的 Rails 应用程序中有一个私有方法来连接到 Amazon S3 执行传递的代码块 然后关闭与 S3 的连接 看起来是这样 def S3 AWS S3 Base establish connection access key id g
  • Tomcat 中 System.setProperty 的范围

    这个问题是 表弟 这个涉及Android https stackoverflow com questions 4483001 scope of system setproperty 但我们在这里Tomcat环境 如果在我的网络应用程序中我设
  • Asp.net core 2 - 文件未发布

    EDIT 有关信息 我正在 macOS 上使用 VS Code 进行开发 我正在尝试将文件包含在我的发布过程中 当前cshtml这代表我的电子邮件模板 我遵循这个thread https github com dotnet sdk issu
  • 为什么 Spring Boot Batch 作业只运行一次?

    我正在使用弹簧靴 我有一个用这些类实现的批处理作业 我的主要课程是 SpringBootApplication ComponentScan com batch PropertySource classpath application pro
  • C++模板:全局对象中的静态成员未初始化

    我有一段简单的 C 代码 其中我通过专门化模板定义了一个模板和一个全局对象 对象构造函数访问专用模板中的静态成员 但事实证明静态成员此时尚未初始化 但对于本地对象 在函数体内定义 它是有效的 我很困惑 我的c 编译器是 g Ubuntu 5
  • 禁用java中的其他声音

    我用 Java 编写了一个程序 使用 pi4j 库在单击 物理 按钮时发出声音 该程序可以工作 但现在它可以互换地播放所有声音 我希望当您单击 2 3 4 或更多按钮时 您只能听到一种声音 这是我希望对您有所帮助的代码 public cla
  • Eclipse 部署程序集 - 在主项目 WEB-INF/lib 内创建依赖项目的 .war?

    我有一个主要的 Web 项目 其中包含部署和通过浏览器访问页面所需的所有内容 然后我有几个 功能 每个功能都是一个单独的项目 可以包含在主项目中 举个例子 我有MainApp and 函数 reportsApp 当构建这些时ant发生以下情
  • 为什么网络浏览器没有内置 jQuery? [复制]

    这个问题在这里已经有答案了 对我来说这似乎是个好主意 或者向 Javascript 本身添加附加功能 因为它只是众多图书馆之一 它可能很受欢迎 但它远不是唯一的选择 它还会导致它冻结在特定版本上并使改进速度慢得多 另外 无论如何也没有什么优
  • org.apache.commons.fileupload.disk.DiskFileItem 未正确创建?

    我正在尝试使用以下示例中显示的代码 创建 DiskFileItem 时出现 java lang NullPointerException https stackoverflow com questions 4120635 java lang
  • 在 bootstrap daterangepicker 中默认选择“本月”范围

    我正在使用 Bootstrap Daterange Picker 它使用以下范围选项 ranges Today moment moment Yesterday moment subtract 1 days moment subtract 1
  • 如何使用 perl 比较日期?

    我如何使用 Perl 比较以下格式的两个日期 dd mon yyyy hh mm ss GMT 例如 2013 年 5 月 12 日 10 10 20 GMT 我无法安装任何外部 Perl 模块 请指教 如果您有 Perl v5 9 5 或
  • 如何使 StackPanel 或 DockPanel 拉伸以适合 WPF 中的容器?

    我有一个Grid作为定义了两列的根容器 只有一行 第一列具有灵活宽度 第二列具有 300px 固定宽度 接下来 我放置了一个ListBox在第二列内部进行水平和垂直拉伸 即填充整个第二列 最后 我定义了一个项目模板ListBox是一个垂直方
  • 在 Windows 7 上更改程序音量

    我想改变程序的音量 而不是master体积 我现在有以下代码 DllImport winmm dll public static extern int waveOutGetVolume IntPtr hwo out uint dwVolum
  • 导入在 __init__.py 中声明的对象

    我无法理解 init py 中声明的对象如何 应该导入到其他文件中 我有一个像这样的目录结构 top lib init py one py 文件内容如下 lib init py a object 库 one py from lib impo