PermissionError: [WinError 5] conda install 后访问被拒绝 pytest

问题描述 投票:0回答:3

PermissionError:[WinError 5] 访问被拒绝 - 在全新 conda 安装后运行 pytest

环境

# packages in environment at C:\Users\rick\miniconda3\envs\xml: # # Name Version Build Channel pytest 6.2.2 py39haa95532_2
(xml) c:\Users\rick>conda info

     active environment : xml
    active env location : C:\Users\rick\miniconda3\envs\xml
            shell level : 2
       user config file : C:\Users\rick\.condarc
 populated config files : C:\Users\rick\.condarc
          conda version : 4.9.2
    conda-build version : not installed
         python version : 3.9.2.final.0
       virtual packages : __win=0=0
                          __archspec=1=x86_64
       base environment : C:\Users\rick\miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\rick\miniconda3\pkgs
                          C:\Users\rick\.conda\pkgs
                          C:\Users\rick\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\rick\miniconda3\envs
                          C:\Users\rick\.conda\envs
                          C:\Users\rick\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.9.2 requests/2.25.1 CPython/3.9.2 Windows/10 Windows/10.0.18362
          administrator : False
             netrc file : None
           offline mode : False
(xml) c:\Users\rick>pytest
=================================================== test session starts ===================================================
platform win32 -- Python 3.9.2, pytest-6.2.2, py-1.9.0, pluggy-0.13.1
rootdir: c:\Users\rick
collected 0 items / 1 error

========================================================= ERRORS ==========================================================
______________________________________________ ERROR collecting test session ______________________________________________
miniconda3\envs\xml\lib\site-packages\_pytest\runner.py:311: in from_call
    result: Optional[TResult] = func()
miniconda3\envs\xml\lib\site-packages\_pytest\runner.py:341: in <lambda>
    call = CallInfo.from_call(lambda: list(collector.collect()), "collect")
miniconda3\envs\xml\lib\site-packages\_pytest\main.py:690: in collect
    for direntry in visit(str(argpath), self._recurse):
miniconda3\envs\xml\lib\site-packages\_pytest\pathlib.py:613: in visit
    yield from visit(entry.path, recurse)
miniconda3\envs\xml\lib\site-packages\_pytest\pathlib.py:613: in visit
    yield from visit(entry.path, recurse)
miniconda3\envs\xml\lib\site-packages\_pytest\pathlib.py:613: in visit
    yield from visit(entry.path, recurse)
miniconda3\envs\xml\lib\site-packages\_pytest\pathlib.py:598: in visit
    for entry in os.scandir(path):
E   PermissionError: [WinError 5] Access is denied: 'c:\\Users\\rick\\AppData\\Local\\Application Data'
================================================= short test summary info =================================================
ERROR  - PermissionError: [WinError 5] Access is denied: 'c:\\Users\\rick\\AppData\\Local\\Application Data'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==================================================== 1 error in 2.35s =====================================================
来自 Microsoft Technet 帖子

该位置的应用程序数据文件夹不是普通文件夹。它是一个文件夹 Junction,默认情况下通常是隐藏的。连接存在的唯一原因是将旧应用程序(这些应用程序经过硬编码以查找该文件夹)重定向到 Windows 7 中的新位置。

pytest 指向已弃用的“文件夹连接点”似乎很奇怪?怎么解决?

windows anaconda pytest
3个回答
2
投票
pytest 首先尝试“收集”测试 - 即扫描实际文件夹及其子文件夹以查找包含测试方法的 python 测试文件。

看起来您刚刚安装了(conda 和)pytest 并且想尝试一下,同时位于您的操作系统\users ick 文件夹,包含 pytest 缺乏访问权限的其他隐藏\受保护的操作系统文件夹。我不认为 pytest 故意尝试使用这个已弃用的“文件夹连接”,它只是恰好位于您目前的实际工作文件夹周围。真正运行测试,您会知道在哪里收集它们,即从哪个文件夹执行 pytest。仅用于验证安装,从不包含任何特殊操作系统文件夹的文件夹运行 pytest。

收集测试也称为“测试发现”,可以参数化和/或配置,涉及该主题的 pytest 文档位于此处

https://docs.pytest.org/en/7.0.x/explanation/goodpractices.html#test-发现 )


0
投票
只需从安装目录运行“pytest”或将其添加到环境变量中即可。 在您的示例中:>cd miniconda3 nvs\xml\lib\site-packages_pytest


0
投票
考虑运行此命令:

python -m pytest [...]
您可以在终端中调用此命令。基本上,通过调用此命令,您可以调用 python 直接运行 pytest,包括将当前目录添加到 sys.path

© www.soinside.com 2019 - 2024. All rights reserved.