如何避免“ImportError:尝试在没有已知父包的情况下进行相对导入”错误

问题描述 投票:0回答:1

背景:我有一堆中小型 python 程序,我试图通过将通用代码分解到所有程序导入的模块中来简化它们。

我遇到的问题是,当我将通用代码放入与所有程序相同的目录中的

common.py
中,并执行
from . import common
时,我收到错误

ImportError:尝试在没有已知父包的情况下进行相对导入

这没有多大意义。根据我对 python 的(有限)理解,“模块”只是一个带有

.py
扩展名的文件,“包”只是一个包含模块的目录。我的所有文件都在一个目录中,那么这不是“包”吗?怎么可能有“没有已知的父包”——根据定义,所有文件都在一个目录中,这就是一个包。很多地方都在谈论
__init__.py
文件,所以我尝试将其添加到目录中,但这没有什么区别。

所以我想我的问题是:Python 包到底是什么,什么时候目录不是包?没有父包意味着什么?这是如何发生的?我查看了各种介绍性Python文档,例如What is a python package以及Python文档,例如Python packages(其中提到了

__init__.py
文件),但我似乎找不到任何真正解释什么的内容实际上是在幕后发生的,或者如何理解这个错误的含义以及如何修复它。

python python-3.x
1个回答
0
投票

试试这个吧

from common import *
© www.soinside.com 2019 - 2024. All rights reserved.