AttributeError:模块'attr'没有属性's'

arc*_*ak2 6 python

>>> import attr
>>> @attr.s
... class SmartClass(object):
...     a=attr.ib()
...     b=attr.ib()
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'attr' has no attribute 's'
>>> 
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它不起作用.我已经使用pip安装了这个模块并且安装正确,但是它仍然在实现部分中显示错误.

aba*_*ert 28

attrPyPI上的库没有看起来像这样的API.没有attr.ib或没有attr.s,所以没有理由你期望它工作.

你可能使用文档中的attrs库,它-有点混乱,安装命名的两个包attrsattr,并且事实上确实有attr.sattr.ib,正是用你尝试的方式.

但是如果你想使用这个attrs库,你必须安装它 - 你可能也想卸载它attr:

$ pip uninstall attr
$ pip install attrs
Run Code Online (Sandbox Code Playgroud)

(如果你真的想要两者,那就有点令人困惑;推荐的方式似乎是使用attrfrom attrsdry_attrfrom attr.)

当然,最好的解决方案是在未来几个月内使用时间机器,这样你就可以使用Python 3.7及其PEP 557数据类,这是一个主要基于attrs但更简单并内置于stdlib的功能.

  • 我来自未来,从2021年开始,我安装了Python 3.7,但它似乎没有内置`attr`,但必须运行:`pip uninstall attr`然后`pip uninstall attrs`然后`pip install attrs`,- 似乎解决了这个问题。谢谢 (3认同)
  • 我来自未来,从 2023 年开始使用 conda。我安装了 Python 3.10.6,但它似乎没有内置“attr”,但必须运行:“pip uninstall attr attrs”然后“conda install attrs” --force-reinstall --update-deps`,似乎可以解决问题。谢谢 (2认同)