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

pipenv执行pytest时忽略源码修改,始终使用缓存内容?

解决Django+pytest代码修改不生效的缓存问题

针对你遇到的代码修改后pytest仍加载旧代码的问题,试试以下方案:

  • 强制使用importlib导入模式
    运行测试时添加--import-mode=importlib参数,强制pytest使用Python的importlib机制重新导入模块,避免旧模块缓存:

    pipenv run pytest src/some/path/models.py --import-mode=importlib
    
  • 彻底禁用pytest缓存
    使用--no-cacheprovider参数完全关闭pytest的缓存功能,比--cache-clear更彻底:

    pipenv run pytest src/some/path/models.py --no-cacheprovider
    
  • 清理项目目录下的__pycache__
    除了虚拟环境中的.pyc文件,还要删除项目src目录下所有__pycache__文件夹:

    find src -name "__pycache__" -type d -exec rm -rf {} +
    
  • 验证虚拟环境的正确性
    确认当前测试使用的是项目对应的虚拟环境,避免全局Python或其他环境干扰:

    pipenv run which python
    

    输出路径应该指向当前项目的pipenv虚拟环境目录,若不符,重新创建虚拟环境:

    pipenv --rm && pipenv install --dev
    
  • 检查Django应用配置
    确保settings.py的INSTALLED_APPS中应用的路径配置正确。如果你的应用在src/some/path,则应该添加'some.path'而非'src.some.path',错误的路径会导致Django加载错误的模块版本。

  • 刷新文件系统缓存
    Ubuntu的文件系统可能存在缓存,执行以下命令强制刷新:

    sync && sudo sysctl -w vm.drop_caches=3
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:30:54