- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到很多人在他们的项目中使用以下导入方法:
from .module1 import a,b
from ..module2 import *
module1和module2是一个.py
文件,但不是包的文件夹。与导入模块
有什么区别?这是否意味着导入当前和../文件夹中的模块?但是当我尝试导入同一文件夹中的另一个文件时,它说:
import .other
>>> SyntaxError: Invalid syntax
from .other import *
>>> ValueError: Attempted relative import in non-package
我对此很好奇。谢谢~
最佳答案
您看到的是相对导入。它们允许您通过指定模块的相对路径来导入模块,而无需对定义模块的包的名称进行硬编码。
Does it mean to import the module in current and ../ folder?
是的。
参见PEP 328更多细节。注意它说:
Relative imports must always use
from <> import
;import <>
is always absolute.
这就是为什么你会得到 SyntaxError
当尝试import .foo
时.
ValueError
可能是因为您正在将导入文件作为脚本运行(它曾经让我很困惑)。您需要将其作为包运行(使用 -m
开关)才能使相对导入起作用。也就是说,假设 foo.py
相对导入其他模块,你不能通过以下方式运行它
$ python foo.py # non-package error
相反,你会这样做
$ python -m foo
查看相关问题:How to do relative imports in Python .
关于python - 导入模块时的 dot_module 和 dot_dot_module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348165/
我看到很多人在他们的项目中使用以下导入方法: from .module1 import a,b from ..module2 import * module1和module2是一个.py文件,但不是包
我是一名优秀的程序员,十分优秀!