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

Python运行目录异常:找不到名为'tools'的模块?

问题原因与解决方法

核心原因

当你执行python tools/tool.py时,Python会将**脚本所在的目录(即tools/)**添加到模块搜索路径sys.path中,而非当前工作目录(根目录)。尽管os.getcwd()显示当前工作目录是根目录,但根目录不在Python的模块搜索路径里,因此Python找不到tools这个包(tools目录本身是根目录下的子目录)。

解决办法

方法1:改用相对导入

因为tool.py和env.py在同一个tools目录下,直接用相对导入引用同目录的模块:

import os
print("Current working directory:",os.getcwd())
# 用相对导入替代绝对导入
from .env import setup_env

注意:这种方式需要将tools作为包来运行,在根目录执行命令:

python -m tools.tool

不能再用python tools/tool.py直接运行,否则会触发ValueError: attempted relative import in non-package错误。

方法2:手动把根目录加入模块搜索路径

在tool.py开头添加代码,将根目录(当前工作目录)加入sys.path,让Python能找到tools包:

import os
import sys
# 将当前工作目录(根目录)添加到模块搜索路径
sys.path.append(os.getcwd())

print("Current working directory:",os.getcwd())
from tools.env import setup_env

这样修改后,原来的python tools/tool.py命令可以正常执行。

方法3:用-m参数以包的形式运行

直接在根目录执行以下命令,Python会自动将根目录加入sys.path,此时tools作为可导入的包,原代码无需修改:

python -m tools.tool

关键知识点补充

  • Python的模块搜索依赖sys.path列表,只有在这个列表里的目录,Python才会去查找对应的包或模块。
  • 直接运行脚本文件时,脚本所在目录会被优先加入sys.path;用-m参数运行包中的模块时,当前工作目录会被加入sys.path。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:18:17