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

Python包导入报错ModuleNotFoundError: No module named 'sounds'求助

问题原因

你遇到的ModuleNotFoundError是因为直接运行脚本时,Python的模块搜索路径不包含sounds包的父目录。

当你执行python3 main.py(在sounds/目录下)或python3 sounds/main.py(在父目录下)时,Python会将脚本所在的目录(前者是/home/user/sounds/,后者也是/home/user/sounds/)加入sys.path。但你的导入语句from sounds.formaters import items是在找名为sounds的子包,而当前sys.path里的目录就是sounds本身,自然找不到这个子包。

解决方案

这里提供几种实用的解决方式:

方式1:使用相对导入 + 包模式运行

修改sounds/main.py的导入语句为相对导入:

from .formaters import items
print(items.format_list)

然后切换到sounds的父目录(/home/user/),用Python的包运行模式执行:

python3 -m sounds.main

这种方式符合Python包的规范,是推荐的做法。

方式2:临时修改模块搜索路径(不推荐)

如果需要直接运行main.py,可以在脚本开头手动把父目录加入sys.path:

import sys
import os
# 获取当前脚本的父目录的父目录(即/home/user/)
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from sounds.formaters import items
print(items.format_list)

这种方式虽然能解决问题,但会破坏包的独立性,不建议在正式项目中使用。

方式3:将包安装到Python环境(适合发布场景)

如果需要在任意位置都能导入sounds包,可以通过打包工具将其安装到Python的site-packages目录。比如创建pyproject.toml文件(放在sounds的父目录):

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "sounds"
version = "0.1.0"

然后执行安装命令(在父目录下):

pip install -e .

之后无论在哪里都能正常导入sounds包,也可以直接运行python3 -m sounds.main。

内容的提问来源于stack exchange,提问作者Rasoul Rostami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:25:11