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

为什么仅运行pytest时Python项目主源文件会出现导入错误?

问题原因

报错的核心是pylib_example/pyfile2.py中的导入写法不符合Python包导入规范:你在pyfile2中直接写import pyfile1属于顶层模块导入,Python会从sys.path(模块搜索路径)中查找名为pyfile1的模块。
pytest运行时默认会把你执行命令的项目根目录~/Desktop/pylib_example加入sys.path,sys.path中不存在pyfile1.py,只有子目录pylib_example下才有该文件,因此触发ModuleNotFoundError。

为什么直接运行pyfile2不会报错

当你直接进入pylib_example子目录运行pyfile2.py时,Python会自动把当前执行文件所在的目录加入sys.path,同目录下的pyfile1可以被直接定位到,因此不会报错。

解决方案

推荐优先选择方案1,符合Python包开发的规范:

  • 方案1:修改pyfile2的导入语句
    将pylib_example/pyfile2.py第一行的import pyfile1改为以下两种写法任意一种即可:
    1. 包内相对导入:from . import pyfile1
    2. 全局绝对导入:from pylib_example import pyfile1
  • 方案2:调整pytest的模块搜索路径(无需修改源码)
    方法一:在项目根目录新建pytest.ini配置文件,写入以下内容:
    [pytest]
    pythonpath = .
    
    方法二:运行pytest时手动指定搜索路径,执行命令:
    PYTHONPATH=. pytest
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:06:03