“试图在非包中进行相对导入”,尽管在一个目录中包含有

2024-05-17 19:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为extended.py的模块,它包含以下行:

from .basic import BasicModule

文件basic.py__init__.py位于同一目录中。但是,当我试图运行它时:

python extended.py

我知道错误:

ValueError: Attempted relative import in non-package

同时添加行:

from __future__ import absolute_import

不能解决问题。 也许我太累了,看不到显而易见的东西,但我看不到问题在这里。


Tags: 模块文件infrompyimport目录extended
1条回答
网友
1楼 · 发布于 2024-05-17 19:34:16

相对导入只适用于包,但是当您在extended.py中导入时,您将运行一个顶级模块

当前目录可能包含一个__init__.py文件,但这还不能使exended.py成为包的一部分。

要将某些内容视为包,您需要导入目录名。以下方法可行:

main.py

packagename\
    __init__.py
    basic.py
    extended.py

然后在main.py中输入:

import packagename.extended

而且只有然后才是包的extended部分,并执行相关的导入工作。

相对导入现在有一些东西是相对的,即packagename父对象。

相关问题 更多 >