【问题标题】:AttributeError: module 'attr' has no attribute 's'AttributeError:模块“attr”没有属性“s”
【发布时间】:2018-08-20 02:10:02
【问题描述】:
>>> 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 安装了这个模块,并且安装正确,但在实现部分仍然显示错误。

【问题讨论】:

  • 你用的是哪个版本的Python?
  • 你有没有将这段代码(或其他一些attr-使用代码)放入当前工作目录中名为attr.py 的脚本中?
  • pip 9.0.1 来自 /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (python 3.5)
  • 在类定义之前不用@attrs 吗?这使它对我有用
  • 如果您尝试测试示例代码,那么您错过了装饰器。

标签: python


【解决方案1】:

PyPI 上的 attr 库没有这样的 API。其中没有 attr.ibattr.s,因此您没有理由期望它能够工作。

您可能正在使用 attrs 库的文档,这有点令人困惑,它安装了名为 attrsattr 的软件包,实际上确实有一个 attr.s 和一个 attr.ib你正在尝试的方式。

但如果你想使用attrs 库,你必须安装它——你可能还想卸载attr

$ pip uninstall attr
$ pip install attrs

(如果你真的想要两者,这有点令人困惑;推荐的方法似乎是使用来自attrsattr,和来自attrdry_attr。)

当然,最好的解决方案是将时间机器跳到未来几个月,这样您就可以使用 Python 3.7,它的 PEP 557 数据类,一个主要基于 attrs 的功能,但更简单且内置进入标准库。

【讨论】:

  • 我来自未来,从 2021 年开始,我安装了 Python 3.7,但它似乎没有内置 attr,但必须运行:pip uninstall attr 然后 pip uninstall attrs然后pip install attrs, - 似乎解决了这个问题。谢谢
【解决方案2】:
$ python3 -c 'import attr; print(attr.__file__)'
/path/to/python3.X/site-packages/attr.py

删除此文件对我有用。所以

rm $(python3 -c 'import attr; print(attr.__file__)')

解决问题。

【讨论】:

  • 没有任何其他信息,这无济于事,但它确实解决了我的 jupyterhub 服务器能够启动的问题!
猜你喜欢
  • 1970-01-01
  • 2018-04-14
  • 2019-02-18
  • 1970-01-01
  • 2020-01-01
  • 2019-07-20
  • 2021-11-05
  • 2021-11-04
相关资源
最近更新 更多