You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6模块导入遇ModuleNotFoundError及ImportError问题求助

解决Python导入config模块的问题

看起来你在处理模块导入时遇到了相对导入失败的问题,还可能存在属性访问的错误,我来帮你一步步梳理解决:

首先先明确你的文件结构和代码情况,方便精准分析:

你的文件结构

test/
├── config.py
└── test.py

config.py代码

class Config:
    def __init__(self, name):
        self.name = name

test.py代码(补全你未写完的部分)

try:
    # Trying to find module in the parent package
    from . import config
    print(config.debug)
    del config
except ImportError:
    print('Relative import failed')

try:
    # Trying to find module on sys.path
    import config
    print(config.debug)
except ImportError:
    print('Absolute import failed')

问题拆解

  1. 相对导入失败的核心原因:
    当你直接运行python test.py时,Python会把这个脚本当作顶层执行脚本(此时脚本的__name__为__main__),而非某个Python包的子模块。相对导入(from . import ...)仅适用于包内部的模块交互,没有包上下文的情况下必然失败。

  2. 属性访问的隐藏错误:
    你的config.py里只定义了Config类,并没有debug这个模块级变量,哪怕导入成功,print(config.debug)也会抛出AttributeError。

解决方案

第一步:修正config.py的内容

先补充你要访问的debug变量(或者调整为你实际需要访问的内容):

# 添加模块级的debug变量
debug = True

class Config:
    def __init__(self, name):
        self.name = name

第二步:选择合适的导入方式

方式1:把test当作Python包运行(推荐)

这是符合Python包规范的标准做法:

  1. 在test文件夹中创建一个空的__init__.py文件(Python 3.3+可以省略,但加上更符合传统包规范),让Python识别它为一个合法包。
  2. 切换到test文件夹的父目录(即包含test文件夹的那个目录),运行命令:
    python -m test.test
    
    此时Python会把test当作包,test.py作为包内模块运行,相对导入from . import config就能正常生效,也能顺利访问config.debug。
方式2:直接运行test.py时调整导入逻辑

如果你坚持要直接运行test.py(比如cd test && python test.py),可以修改test.py,去掉相对导入的尝试,或者手动调整Python的搜索路径来支持绝对导入:

import sys
from pathlib import Path

# 将当前脚本所在目录加入Python的模块搜索路径
sys.path.append(str(Path(__file__).parent))

try:
    import config
    print(config.debug)
except ImportError:
    print('Absolute import failed')

这种方式下,绝对导入能成功找到config.py模块,因为我们把当前目录加入了sys.path。

额外提示

  • 尽量避免在直接运行的脚本中使用相对导入,相对导入是为包内模块间共享代码设计的。
  • 如果你的项目是大型工程,建议用setup.py或pyproject.toml管理包结构,导入逻辑会更清晰规范。

内容的提问来源于stack exchange,提问作者Jake Bourne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:45:51