Python从父目录其他目录导入模块遇ModuleNotFoundError的解决求助
问题描述
项目结构如下:
project/ public_app/ __init__.py dir/ __init__.py config.py subdir/ __init__.py functions.py utils.py my_app/ main.py
我希望在my_app/main.py中导入public_app/dir/subdir/functions.py中的函数,已实现的方案是在main.py中添加以下代码:
# main.py import sys import os path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../')) sys.path.append(path) from public_app.dir.subdir.functions import *
该方案可行,但导入public_app/dir/subdir/utils.py时出现问题——因为utils.py内部包含相对导入语句:
# utils.py from dir.config import *
若在main.py中执行:
# main.py from public_app.dir.subdir.utils import *
会触发ModuleNotFoundError: No module named 'dir'错误。
请问有什么解决办法?需说明的是,我不想修改public_app目录(该目录来自公共仓库,会频繁更新),同时希望保持my_app目录独立以保证整洁易维护。
补充说明:我偶然间已找到解决办法,详见下方回答。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

