>>> 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'
>>>
我不明白为什么它不起作用。我已经使用pip安装了这个模块并且安装正确,但它仍然在实现部分显示错误。
答案 0 :(得分:22)
PyPI上的attr
库没有看起来像这样的API。其中没有attr.ib
或attr.s
,因此没有理由让您认为它可以正常工作。
您可能正在使用attrs
库的文档,这有点令人困惑地安装了名为attrs
和attr
的软件包,实际上确实有attr.s
和attr.ib
一样,完全按照你的尝试方式使用。
但是如果你想使用attrs
库,你必须安装它 - 你可能也想要卸载attr
:
$ pip uninstall attr
$ pip install attrs
(如果你真的想要两者,那就有点令人困惑;推荐的方法似乎是使用attr
中的attrs
和来自dry_attr
的{{1}}。)< / p>
当然,最好的解决方案是在未来几个月内使用时间机器,这样您就可以使用Python 3.7及其PEP 557数据类,这个功能主要基于attr
,但更简单并内置于stdlib。
答案 1 :(得分:-2)
$ python3 -c 'import attr; print(attr.__file__)'
/path/to/python3.X/site-packages/attr.py
删除此文件对我有用。所以
rm $(python3 -c 'import attr; print(attr.__file__)')
解决问题。