Python模块导入报错:如何无需前置点号解决ModuleNotFoundError?
问题:无需相对导入前缀(点号)实现模块正确导入
项目目录结构
project │ └── app/ │ ├── main.py ├── __init__.py │ ├── common/ │ ├── __init__.py │ └── do_common.py │ └── util/ ├── __init__.py └── do_util.py
现有代码内容
main.py 初始代码
import sys from pathlib import Path from common.do_common import foo sys.path.append(str(Path(__file__).resolve().parent)) foo()
do_common.py 初始代码
def foo(): print("foo")
执行命令与初始报错
激活虚拟环境后执行命令:
python -m app.main
出现报错:ModuleNotFoundError: No module named 'common'
将导入语句改为from .common.do_common import foo(在common前添加点号)后可正常输出foo。
新增导入后的报错
当在do_common.py中导入do_util.py时,修改后的代码如下:
from util.do_util import bar def foo(): print("foo") bar()
出现报错:ModuleNotFoundError: No module named 'util';改为from .util.do_util import bar后,又出现报错:ModuleNotFoundError: No module named 'app.common.util'。
需求
如何修改才能无需在模块名前添加点号即可正确导入?当前环境为Windows 10下的Python 3.12。
内容的提问来源于stack exchange,提问作者Mr. Kenneth
相关产品推荐
相关产品推荐

