这不起作用的原因:
>>> import structlog
>>> structlog.contextvars.bind_contextvars()
AttributeError: module 'structlog' has no attribute 'contextvars'
>>>
但这确实:
>>> from structlog.contextvars import bind_contextvars
>>> bind_contextvars()
>>>
似乎找不到有关何时使用from x import y
与import x
的文档
我想知道您使用的是哪个版本的库和Python,因为对于Python 3.8(Win 10 x64)和
structlog
21.1.0(最新版本),我没有看到错误,并且作为包的code indicates(__init__.py
),子模块被导入(因为contextvars.py存在):在一些旧版本中,可能会有所不同,并且子模块可能仅在某些情况下导入,而这些情况在不导入时会导致错误
虽然我无法在单独的环境中复制此问题
…一般的答案是,此行为取决于特定库的构造方式,以及是否在导入主模块时解析并添加所有子模块(或您正在尝试使用的子模块,无论如何),如
contextvars
,作为导入模块(如structlog
)的成员此处实际使用所遵循的文档是由给定模块(如果有)的维护人员提供的官方文档。它的质量,以及如何导入指南的数量,自然会因作者和模块而异
在这种特殊情况下,official structlog documentation about its context variables module将是一个很好的起点
相关问题 更多 >
编程相关推荐