- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我注意到我提出了大约 5 个问题来询问相对导入,每个问题都有可行的解决方案,但情况不同。我阅读文档的次数越多,尝试不同案例的次数越多,我就越感到困惑,并质疑我是否真的正确地阅读了这些词。
来自 pep 328:
A single leading dot indicates a relative import,starting with the current package. Two or more leading dotsgive a relative import to the parent(s) of the current package,one level per dot after the first.
我的理解是“当前包”是这里的关键词。什么是“当前包”?它是执行开始的模块的包吗? (即:具有 __ 名称 __ == "__ main __"的文件)。
无论如何,这是我使用 ..
的简单情况符号。
main/ lib/ __init__.py myLib.py plugin/ __init__.py needLib.py run.py
run.py 导入 needLib:from plugin import needLib
needLib 导入 myLib:from ..lib import myLib
我的脑子里在想什么:(needLib) 上一个包,进入 lib,获取 myLib
以下是我的执行方式:python run.py
结果:尝试相对导入超出顶层包
但是当我将导入调用更改为 from .lib import myLib
时, 它有效。
我不明白为什么后者有效,而 ..
符号没有。当然,main
不是一个包,所以我只是扔一个 <strong>init</strong>.py
怎么样?也有,导致
main/ lib/ __init__.py myLib.py other/ __init__.py needLib.py __init__.py run.py
但这并没有什么不同;仍在尝试导入超出顶级包
查看此问题:python: forcing relative imports to search from script file
..
符号实际上有效!现在想想,我不明白为什么会这样。该场景中的执行从相对导入发生的位置向上 2 级开始,而该场景中的执行从相对导入发生的位置向上 1 级开始。除了我开始执行的地方,情况是相同的。
两者都是我说的“向上一个目录,进入 lib 包,然后获取你想要的模块”。
这种情况与引用情况之间的主要区别是什么?为什么 ..
在那里工作,但不在这里?我使用 2.6 与此有什么关系吗?或者也许我是如何执行它的? python run.py
最佳答案
如您所见,from ..lib import myLib
不起作用,因为 main
不是包。相对导入仅适用于模块自己的包。在您的示例中,lib
和 other
是两个不同的包。
将 __init__.py
放入 main
仅当您将 run
移动到新创建的 main
之外时才有效包,以便当前目录(sys.path
的一部分)不在包内。
关于python - 更多相对进口奇数 : . 。符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207265/
当我使用终端命令capp gen MyProject创建新的Cappuccino项目时,我得到的AppController.j使用许多Foundation和AppKit类,但是只有一个import语句
我正在做作业,我已经接近完成作业了,但我遇到了问题。我刚刚学会了如何在 eclipse 中使用包,所以我有一个类从包中导入另一个类(我想我说得对)主要提示用户输入 -100 到 100 之间的整数,但
我有一个 Namespacing.js,内容如下 (function(){ window.GlobalObject = { foo : function() { console
我第一次接触图书馆,我注意到解决图书馆内部导入问题的最简单方法是使用如下结构: from . import x from ..some_module import y 这让我觉得“不好”。也许这只是我
我需要减小可执行文件的大小,并且经常在我的可执行文件中将某些“不必要的” uses占用一定的大小。 例如: Unit1连接到Unit2,但是两个单元的导入为“ System.SysUtils”。 然后
我正在尝试使用 polymer 创建 Electron 应用程序。我尝试使用导入一个自定义元素 但这没用。控制台说: GET file:///D:/src/lux-app.html net::ERR
我需要将大约 1,000,000 条记录导入到数据存储中。更重要的是,我想将其中一些记录合并为一个记录。到目前为止,我尝试过的所有操作都需要很长时间,并且如果后端中途终止任务并在另一台计算机上重新启动
在我的一个 Python 包中,__init__.py 文件包含语句 from . import XXXX “.”是什么意思?是指这里?我通过查看另一个包得到了这个技术,但我不明白它是什么意思。 谢谢
我有一些工作 Dart polymer 代码,显示了一个带有一些标记的谷歌地图。我花了一段时间才让这些显示出来,因为初始化例程似乎有点不稳定,好像有时在 map div 尝试渲染之前没有足够的时间来加
import React, { Component } from 'react'; import { View, Text } from 'react-native'; import Firebase
大家好,我是 python 和 OCR 的新手。我正在尝试实现 OCR。我已经安装了 OCR 所需的所有依赖项。同样重要的是我正在使用 Anaconda 自定义提供的 Python。因此,当我尝试导入
我目前正在尝试构建一个 Electron 应用程序。我试图将自定义字体引入到我的应用程序中,并且在开发中,该自定义字体有效,但是,当将其编译为可用于生产环境的应用程序时,该字体不会通过。 我在此处放置
我正在尝试将 Google 的日历 API 实现到我的 Eclipse 中的 Spring Boot 项目中。我正在关注这个Java tutorial from the Google Develope
我是一名优秀的程序员,十分优秀!