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

Python项目运行报错ModuleNotFoundError: No module named 'src'求解决

Python模块导入错误:ModuleNotFoundError: No module named 'src'

项目目录结构

📦src
 ┣ 📂utils
 ┃ ┣ 📜custom_pow.py
 ┃ ┣ 📜equation.py
 ┃ ┗ 📜__init__.py
 ┣ 📜app.py
 ┗ 📜__init__.py

代码文件内容

custom_pow.py

class Pow:
    def __init__(self,a,n):
        self.a = a
        self.n = n
    def pow(self):
        out = self.a ** self.n
        return out

equation.py

from src.utils.custom_pow import Pow
class CustFormula:
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def apbwsq(self):
        ap = Pow(self.a,2)
        bp = Pow(self.b,2)
        out = (ap.pow()) + (2*self.a*self.b) + (bp.pow())
        return out
    def apbwcub(self):
        aap = Pow(self.a,3)
        bbp = Pow(self.b,3)
        ap = Pow(self.a,2)
        bp = Pow(self.b,2)
        out = (aap.pow()) + (bbp.pow()) + 3*ap.pow()*self.b + 3*bp.pow()*self.a
        return out

app.py

from src.utils.equation import CustFormula

p = CustFormula(2,3)
out = p.apbwsq()

print(f"(2+3)^2 = {out}")

错误信息

File "********\module-test\src\app.py", line 2, in
from src.utils.equation import CustFormula
ModuleNotFoundError: No module named 'src'

解决方法

方法1:使用相对导入修改代码

当你在src目录下直接运行app.py时,src是当前工作目录,Python不会将其识别为模块名,需要调整导入路径:

  • 修改app.py的导入语句:
from utils.equation import CustFormula

p = CustFormula(2,3)
out = p.apbwsq()

print(f"(2+3)^2 = {out}")
  • 修改equation.py的导入语句为相对导入:
from .custom_pow import Pow
class CustFormula:
    # 其余代码保持不变

方法2:添加项目根目录到Python路径

如果你想保留原始的绝对导入写法,可将项目根目录(src的父目录module-test)添加到PYTHONPATH:

  • Windows命令行:
set PYTHONPATH=你的项目根目录路径
python src\app.py
  • Linux/macOS终端:
export PYTHONPATH=/你的项目根目录路径
python src/app.py

方法3:从项目根目录运行脚本

切换到module-test目录(src的父目录),使用模块方式运行脚本:

python -m src.app

这种方式会将src作为模块加载,原始的导入语句无需修改。

内容的提问来源于stack exchange,提问作者Sayandip Ghatak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:35:00