首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入模块时的dot_module和dot_dot_module

导入模块时的dot_module和dot_dot_module
EN

Stack Overflow用户
提问于 2016-02-11 19:19:00
回答 1查看 2.2K关注 0票数 2

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

代码语言:javascript
复制
from .module1 import a,b
from ..module2 import *

module1和module2是一个.py文件,但不是包的文件夹。import module有什么不同?它是否意味着导入当前和./文件夹中的模块?但是,当我试图在同一个文件夹中导入另一个文件时,它说:

代码语言:javascript
复制
import .other
>>> SyntaxError: Invalid syntax
from .other import *
>>> ValueError: Attempted relative import in non-package

我对此很好奇。谢谢~

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-11 19:44:23

你看到的是相对进口。它们允许您通过指定模块的相对路径来导入模块,而无需对定义模块的包的名称进行硬编码。

它是否意味着导入当前和./文件夹中的模块?

是。

有关更多详细信息,请参阅佩普328。注意,上面写着:

相对导入必须始终使用from <> importimport <>始终是绝对的。

这就是为什么您在尝试SyntaxError时获得import .foo的原因。

ValueError可能是因为您将导入文件作为脚本运行(它常常使我感到困惑)。您需要将它作为一个包运行(使用-m开关),以使相对导入工作。也就是说,假设foo.py相对导入其他模块,则不能通过

代码语言:javascript
复制
$ python foo.py  # non-package error

相反,你做了

代码语言:javascript
复制
$ python -m foo

参见相关问题:如何用Python进行相对导入

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35348165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档