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

运行pytest无响应,触发PermissionError权限拒绝问题求助

PermissionError导致pytest执行停滞的解决办法

问题描述

创建了运行pytest的Python文件,但执行pytest命令时无反应、命令提示符停滞,按下Ctrl+C后抛出如下权限错误:

File "C:\ProgramData\Anaconda3\lib\tempfile.py", line 255, in _mkstemp_inner
    fd = _os.open(file, flags, 0o600)
PermissionError: [Errno 13] Permission denied: 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\anyio\\__pycache__\\tmp7fewgyj8'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\Scripts\pytest-script.py", line 10, in <module>
    sys.exit(console_main())
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 187, in console_main
    code = main()
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 145, in main
    config = _prepareconfig(args, plugins)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 324, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\_callers.py", line 55, in _multicall
    gen.send(outcome)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\helpconfig.py", line 102, in pytest_cmdline_parse
    config: Config = outcome.get_result()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 1016, in pytest_cmdline_parse
    self.parse(args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 1304, in parse
    self._preparse(args, addopts=addopts)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 1187, in _preparse
    self.pluginmanager.load_setuptools_entrypoints("pytest11")
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\_manager.py", line 287, in load_setuptools_entrypoints
    plugin = ep.load()
  File "C:\ProgramData\Anaconda3\lib\importlib\metadata.py", line 86, in load
    module = import_module(match.group('module'))
  File "C:\ProgramData\Anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\assertion\rewrite.py", line 163, in exec_module
    _write_pyc(state, co, source_stat, pyc)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\assertion\rewrite.py", line 315, in _write_pyc
    with atomic_write(os.fspath(pyc), mode="wb", overwrite=True) as fp:
  File "C:\ProgramData\Anaconda3\lib\contextlib.py", line 119, in __enter__
    return next(self.gen)
  File "C:\ProgramData\Anaconda3\lib\site-packages\atomicwrites\__init__.py", line 166, in _open
    with get_fileobject(**self._open_kwargs) as f:
  File "C:\ProgramData\Anaconda3\lib\site-packages\atomicwrites\__init__.py", line 183, in get_fileobject
    descriptor, name = tempfile.mkstemp(suffix=suffix, prefix=prefix,
  File "C:\ProgramData\Anaconda3\lib\tempfile.py", line 336, in mkstemp
    return _mkstemp_inner(dir, prefix, suffix, flags, output_type)
  File "C:\ProgramData\Anaconda3\lib\tempfile.py", line 255, in _mkstemp_inner
    fd = _os.open(file, flags, 0o600)

解决方案

1. 以管理员权限运行命令提示符

ProgramData是系统级目录,普通用户权限无法写入。右键点击命令提示符,选择以管理员身份运行,再执行pytest命令。

2. 修改目标目录的权限

找到路径C:\ProgramData\Anaconda3\lib\site-packages\anyio\__pycache__:

  • 右键该文件夹,选择属性 → 安全 → 编辑
  • 在弹出的权限窗口中,找到当前登录用户,勾选写入权限,点击确定保存。

3. 使用虚拟环境隔离依赖(推荐长期方案)

系统环境权限问题容易反复,用虚拟环境可以彻底规避:

# 创建虚拟环境(替换3.x为你的Python版本)
conda create -n pytest_env python=3.8
# 激活虚拟环境
conda activate pytest_env
# 安装依赖
pip install pytest anyio

之后在虚拟环境中执行pytest即可,虚拟环境的文件都在用户目录下,无权限限制。

4. 临时禁用pytest断言重写

如果只是临时测试,可以通过参数跳过pytest的pyc文件写入:

pytest --no-assertion-rewrite

内容的提问来源于stack exchange,提问作者Yiğit Ağalar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:36:17