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

运行mod_b.py导入a.sub_a.mod_a时遇ModuleNotFoundError问题求助

解决Python模块找不到a的问题

这个问题我之前开发项目时也碰到过,核心原因是Python的模块搜索路径里没有包含你的项目根目录(也就是python-test文件夹),所以它找不到顶级包a。下面给你几种实用的解决办法,从临时方案到长期项目的最佳实践都有:

方法一:从项目根目录运行脚本(最推荐)

这是Python官方推荐的模块运行方式,能从根源避免路径问题。

  1. 打开终端,切换到你的项目根目录:
    cd C:\Users\%%\Desktop\python-test
    
  2. 用-m参数以模块的方式运行mod_b.py:
    python -m a.sub_b.mod_b
    
    这种方式会自动把当前目录(项目根)加入到Python的模块搜索路径中,就能顺利找到a.sub_a.mod_a了。

方法二:临时设置PYTHONPATH环境变量

如果你不想切换目录,可以先把项目根目录添加到PYTHONPATH,让Python能找到包a:

Windows CMD命令:

set PYTHONPATH=C:\Users\%%\Desktop\python-test
python c:/Users/%%/Desktop/python-test/a/sub_b/mod_b.py

Windows PowerShell命令:

$env:PYTHONPATH = "C:\Users\%%\Desktop\python-test"
python c:/Users/%%/Desktop/python-test/a/sub_b/mod_b.py

注意:这个设置只在当前终端会话有效,关闭终端后就失效了。

方法三:在脚本中动态添加项目路径

如果希望脚本自己能处理路径问题,可以在mod_b.py的开头添加一段代码,自动把项目根目录加入到搜索路径:

import sys
from pathlib import Path

# 通过当前脚本的位置,向上追溯找到项目根目录(python-test)
project_root = Path(__file__).parent.parent.parent
sys.path.append(str(project_root))

# 现在就能正常导入了
from a.sub_a import mod_a
mod_a.sample()

这种方法的优势是不用手动设置环境变量,脚本在任何位置都能运行。

方法四:将项目安装为可编辑包(适合长期开发的项目)

如果这是一个需要长期维护的项目,推荐把它安装为Python的可编辑包,这样不管你在系统哪个位置运行,都能找到模块:

  1. 在项目根目录(python-test)下创建一个pyproject.toml文件,内容如下:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "python-test"
version = "0.1.0"
  1. 打开终端,切换到项目根目录,运行以下命令安装为可编辑模式:
pip install -e .

安装完成后,你就可以在任何位置运行mod_b.py,Python都能正确找到a模块了。

额外注意事项

确保你的每个包目录(a、sub_a、sub_b)里都有一个__init__.py文件(可以是空文件),这样Python才会把这些目录识别为可导入的包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:09:24