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

Python项目同目录导入报错:No module named 'config'

解决Python包内模块导入错误:ModuleNotFoundError: No module named 'config'

问题分析

你的项目结构中,voice.py属于modules包,但运行main.py时,Python的模块搜索路径以lunarcity目录为起点。如果voice.py中用import config,Python会在lunarcity根目录找config.py而非modules目录,导致找不到模块;相对导入from . import config本身是正确的,但需确保voice.py是作为modules包的一部分被导入,而非单独运行。

解决方案

1. 修正voice.py中的导入语句

选择以下两种正确的导入方式之一:

方式一:相对导入(推荐,保持包内独立性)

# voice.py
from . import config
from . import manager

# 调用模块内的函数/变量示例
def handle_voice_message():
    print(config.VOICE_SETTINGS)
    manager.process_voice_data()

方式二:绝对导入(明确指定包路径)

# voice.py
from modules import config
from modules import manager

# 同样可以调用对应模块内容

2. 修正main.py中的导入语句

确保从modules包中正确导入voice模块或其函数:

# main.py
# 导入整个voice模块
from modules import voice

# 或者直接导入需要的函数
from modules.voice import handle_voice_message

def main():
    # 使用导入的函数
    handle_voice_message()

if __name__ == "__main__":
    main()

3. 正确的运行方式

必须以main.py为入口运行项目,且运行路径要正确:

  • 进入lunarcity目录,执行:
    python main.py
    
  • 或者在lunarcity的父目录,执行:
    python lunarcity/main.py
    

注意:不要直接运行voice.py(比如python modules/voice.py),否则voice.py会被当作顶层脚本,相对导入会触发ValueError: attempted relative import in non-package错误。

额外排查点

  • 确认modules/__init__.py存在即可,内容为空不影响包的识别;
  • 再次检查所有文件名和导入语句的拼写(包括大小写,Windows系统不区分,但Linux/macOS区分)。

内容的提问来源于stack exchange,提问作者hikaru-k-bit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:35:15