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

使用tmpdir运行pytest报错:AttributeError: module 'py' has no attribute 'path'

问题描述

使用pip install pytest安装pytest后,运行如下测试用例:

def test_sf_bayer_training(tmpdir):
    print(tmpdir)
    _config = TestingTrainerConfigInstance()
    _config.name = 'test_sf_bayer_training'
    _config.output_path = tmpdir / _config.name
    _curr_p = os.getcwd()
    _config.model_config_path = f'.models/sf.yaml'
    print(_config)
    return

出现错误:

File "/home/davids/venvs/vai/lib/python3.10/site-packages/_pytest/_io/terminalwriter.py", line 10, in <module>
    from _pytest.compat import final
  File "/home/davids/venvs/vai/lib/python3.10/site-packages/_pytest/compat.py", line 44, in <module>
    LEGACY_PATH = py.path.local
AttributeError: module 'py' has no attribute 'path'

Process finished with exit code 1

但在本地IPython中执行py.path.local可正常返回py._path.local.LocalPath,当前环境相关版本:

py==1.11.0
pytest==7.4.0
解决方案

1. 升级py模块到兼容版本

pytest 7.4.0需要更高版本的py模块支持,执行以下命令升级:

pip install --upgrade py

升级后建议保证py版本在1.12.0及以上,该版本修复了模块结构相关问题,可与pytest 7.4.0兼容。

2. 重新安装pytest和py模块

若升级后问题仍存在,可能是安装缓存或依赖冲突导致,先卸载再重新安装:

pip uninstall -y pytest py
pip install pytest

重新安装会自动拉取pytest所需的兼容版本py模块,规避版本不匹配问题。

3. 检查虚拟环境一致性

确认运行pytest的环境与IPython使用的是同一个虚拟环境,避免因环境差异导致模块结构不同。可通过以下命令验证:

# 查看当前pytest所在路径
which pytest
# 查看当前IPython所在路径
which ipython

若路径不同,切换到对应虚拟环境后再运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:43:23