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

Windows环境下运行pytest出现PermissionError问题求助

Windows下pytest执行触发PermissionError(WinError32)的解决办法

问题场景

在Windows环境运行Python项目的pytest时,出现如下权限错误,即使给目标文件/目录赋予完全权限仍无法解决;相同代码在macOS上可正常运行,已查阅相关资料未找到有效方案。

报错详情:

self = WindowsPath('C:/Users/PBC53~1.PAR/AppData/Local/Temp/tmp4jyswr0l'), missing_ok = False

def unlink(self, missing_ok=False):
    """
    Remove this file or link.
    If the path is a directory, use rmdir() instead.
    """
    try:
        self._accessor.unlink(self)

PermissionError: [WinError 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird: 'C:\Users\PBC53~1.PAR\AppData\Local\Temp\tmp4jyswr0l'
C:\Program Files\Python310\lib\pathlib.py:1203: PermissionError

解决办法

  • 定位并结束占用临时文件的进程
    打开Windows任务管理器的「详细信息」标签,搜索临时文件名tmp4jyswr0l或完整路径,找到关联进程后结束,再重新运行pytest。也可以用微软Sysinternals的handle.exe工具精准定位:

    handle.exe C:\Users\PBC53~1.PAR\AppData\Local\Temp\tmp4jyswr0l
    

    根据输出的进程ID,执行taskkill /PID <进程ID>结束占用进程。

  • 自定义pytest临时文件目录
    避开系统Temp目录的潜在冲突,在项目根目录创建pytest.ini并添加:

    [pytest]
    tmp_path = ./tests/pytest_tmp
    

    或者直接在命令行指定临时目录:

    pytest --tmpdir=./tests/custom_tmp
    
  • 排查测试代码的文件资源泄漏
    Windows对文件锁的管控比macOS严格,检查测试用例中是否存在打开文件后未释放的情况,比如使用open()后未调用close(),或未正确使用with open(...) as f:上下文管理器,确保所有文件操作都释放了句柄。

  • 以管理员身份运行执行环境
    右键点击终端或IDE,选择「以管理员身份运行」,再执行pytest,部分系统级目录的操作需要更高权限才能完成。

  • 临时关闭杀毒软件实时保护
    部分杀毒软件会实时扫描临时文件并锁定,临时关闭Windows Defender或第三方杀毒软件的实时保护,重试pytest确认是否是拦截导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:01:10