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

将Python测试文件移至子目录后出现ModuleNotFoundError求助

Python模块找不到问题的解决办法

问题原因

直接运行tests/test_market_rates.py时,Python的模块搜索路径默认是当前脚本所在的tests/目录,而lib目录在项目主目录,不在这个搜索路径里,所以会抛出ModuleNotFoundError: No module named 'lib'。把脚本移到主目录后,主目录被加入搜索路径,自然能找到lib模块。

下面是几种实用的解决办法:

方法1:在测试脚本中手动添加项目路径

修改test_market_rates.py,在导入语句前把项目主目录加入Python的搜索路径:

import sys
import os

# 获取当前脚本的上级目录(即项目主目录)并添加到搜索路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from lib.utils import say_hello
print(say_hello())

修改后不管在哪运行这个脚本,都能找到lib模块。

方法2:使用相对导入(需将tests作为包)

  1. 在tests目录下创建空的__init__.py文件,把tests转为Python包。
  2. 修改test_market_rates.py的导入语句为相对导入:
from ..lib.utils import say_hello
print(say_hello())
  1. 从项目主目录运行测试脚本,用模块方式启动:
python -m tests.test_market_rates

注意:不能直接在tests目录下运行该脚本,必须从项目主目录执行上述命令。

方法3:设置PYTHONPATH环境变量

运行脚本前,把项目主目录添加到PYTHONPATH环境变量中,让Python识别到lib模块:

  • Linux/macOS:
export PYTHONPATH=/你的项目主目录路径
python tests/test_market_rates.py
  • Windows(命令提示符):
set PYTHONPATH=C:\你的项目主目录路径
python tests\test_market_rates.py
  • Windows(PowerShell):
$env:PYTHONPATH = "C:\你的项目主目录路径"
python tests\test_market_rates.py

方法4:将项目转为可安装包(推荐)

这种方式适合长期维护的项目,能彻底解决模块路径问题:

  1. 在项目主目录创建setup.py文件,内容如下:
from setuptools import setup, find_packages

setup(
    name="你的项目名称",
    version="0.1",
    packages=find_packages(),
)
  1. 在项目主目录执行命令,安装开发版包:
pip install -e .

安装完成后,不管在哪个目录运行测试脚本,都能正常导入lib模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:27:12