导入Pytest时出现“AttributeError: 'str' object has no attribute 'pattern'”错误。

12

尝试在Python 3.8中导入pytest会失败,并出现以下错误:

>>> import pytest
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\pytest\__init__.py", line 6, in <module>
    from _pytest.assertion import register_assert_rewrite
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\_pytest\assertion\__init__.py", line 7, in <module>
    from _pytest.assertion import rewrite
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\_pytest\assertion\rewrite.py", line 24, in <module>
    from _pytest.assertion import util
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\_pytest\assertion\util.py", line 14, in <module>
    import _pytest._code
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\_pytest\_code\__init__.py", line 2, in <module>
    from .code import Code  # noqa
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\_pytest\_code\code.py", line 28, in <module>
    import pluggy
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\pluggy\__init__.py", line 16, in <module>
    from .manager import PluginManager, PluginValidationError
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\pluggy\manager.py", line 6, in <module>
    import importlib_metadata
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\importlib_metadata\__init__.py", line 478, in <module>
    __version__ = version(__name__)
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\importlib_metadata\__init__.py", line 445, in version
    return distribution(package).version
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\importlib_metadata\__init__.py", line 418, in distribution
    return Distribution.from_name(package)
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\site-packages\importlib_metadata\__init__.py", line 179, in from_name
    dists = resolver(name)
  File "<frozen importlib._bootstrap_external>", line 1382, in find_distributions
  File "C:\Users\Al\AppData\Local\Programs\Python\Python38\lib\importlib\metadata.py", line 379, in find_distributions
    found = cls._search_paths(context.pattern, context.path)
AttributeError: 'str' object has no attribute 'pattern'

我该如何解决这个问题?

1个回答

18

此问题已在2019年11月11日的这个提交中得到修复。

解决方法是通过运行pip install -U pluggy(或者在macOS和Linux上运行pip3 install -U pluggy)来更新pluggy依赖项(错误发生在版本0.12.0中)。仅仅更新pytest并不足以更新其依赖关系。

运行pip后,您应该能够无误地导入pytest。


1
对我有用 :) - shpigi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接