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

Python跨目录导入模块遇ModuleNotFoundError问题求助

解决Python模块导入路径问题:模拟从根目录运行脚本

问题场景

把原本在根目录的process.py移到processing_scripts目录后,运行时弹出ModuleNotFoundError: No module named 'utils'错误。当前项目文件结构如下:

.
+-- Root
    |
    |-- main_script.py
    |
    +-- utils
    |   |
    |   |-- utilsA.py
    |    `- utilsB.py
    |
    +-- processing_scripts
        |
         `- process.py    

相关代码里的导入逻辑:

  • process.py:from utils import utilsA as u
  • utilsA.py:from utils.utilsB import util_function

试过sys.path.append('../')和修改process.py的导入为from Root.utils import utilsA as u,但只要utilsA.py引用utilsB.py就还是报错。想要不用改大量代码,让process.py模拟从根目录运行的效果。

可行方案

方案1:在脚本里主动添加根目录到搜索路径(推荐)

直接在process.py的最开头加这段代码,把项目的Root目录加入Python的模块搜索路径:

import os
import sys

# 获取当前脚本的绝对路径所在目录
current_script_dir = os.path.dirname(os.path.abspath(__file__))
# 往上跳一级就是Root目录
root_project_dir = os.path.dirname(current_script_dir)
# 把根目录插入到搜索路径最前面
sys.path.insert(0, root_project_dir)

加完之后,不管你从哪个目录运行process.py,Python都会从Root目录开始找utils模块,utilsA.py里的导入逻辑也完全不用改,直接就能正常运行。

方案2:从根目录直接启动脚本

不用改任何代码,直接打开终端切换到Root目录,然后运行:

python processing_scripts/process.py

这样Python会把Root当作工作目录,所有模块导入的逻辑和之前process.py在根目录时完全一样,自然不会报错。

方案3:设置PYTHONPATH环境变量

运行process.py前,先把Root目录设为PYTHONPATH,让Python自动识别这个路径作为模块搜索根目录:

  • Linux/macOS终端操作:
export PYTHONPATH=/实际路径/YourProject/Root
cd processing_scripts
python process.py
  • Windows命令提示符操作:
set PYTHONPATH=C:\实际路径\YourProject\Root
cd processing_scripts
python process.py

设置完之后,原有所有导入语句都能正常解析,不需要修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:12:22