gpt4 book ai didi

python - 导入模块时的 dot_module 和 dot_dot_module

转载 作者:行者123 更新时间:2023-12-01 04:07:49 25 4
gpt4 key购买 nike

我看到很多人在他们的项目中使用以下导入方法:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com