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

如何解决命令行运行Python测试时无法引用子目录模块的问题

你不需要在顶层目录添加__init__.py,问题核心是Python运行时的模块搜索路径中没有包含你的项目顶层目录。PyCharm默认会自动把项目根目录加入模块搜索路径,所以运行正常,而原生命令行执行脚本时不会自动做这个操作,因此找不到utils模块。

解决方法

你可以选择以下任意一种方式解决:

  • 临时指定模块搜索路径运行
    执行命令时临时把当前目录加入PYTHONPATH环境变量即可:

    • Mac/Linux 终端:PYTHONPATH=$(pwd) python tests/test.py
    • Windows CMD:set PYTHONPATH=%cd% && python tests/test.py
    • Windows PowerShell:$env:PYTHONPATH=$pwd.Path; python tests/test.py
  • 在测试脚本中手动添加搜索路径
    在test.py的最开头加入以下代码,把项目根目录主动加入搜索路径:

    import sys
    from pathlib import Path
    # 获取test.py所在目录的父目录(也就是项目根目录)加入搜索路径
    sys.path.append(str(Path(__file__).parent.parent.resolve()))
    
    from utils import UtilClass
    x = UtilClass()
    
  • 用模块模式运行脚本
    不要直接执行py文件,改用Python的-m参数以模块方式运行,此时当前执行命令的目录会自动加入搜索路径:

    python -m tests.test
    

    注意末尾不要加.py后缀。

  • 长期项目推荐安装为可编辑包
    如果你是长期维护这个项目,可以在项目根目录添加pyproject.toml配置文件声明项目结构,之后执行pip install -e .把项目安装为当前环境的可编辑包,之后任何位置运行都能正常导入utils模块,不需要额外配置路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:15:03