鉴于这种情况:
b.py:
进口A.
c.py:
来自b import A
PyCharm </跨度> 在b.py中抱怨“import A”是一个未使用的导入,而Optimize导入会将其删除…,在c.py中破坏导入
我知道这些链式导入不是一个好习惯(虽然你可以用它来实现一个外观模块),但它是我还是它 PyCharm </跨度> 失败? …
你实际上可以使用 PyUnresolvedReferences 用于取消激活import语句检查的标记:
PyUnresolvedReferences
# noinspection PyUnresolvedReferences import A
参考: PyCharm bug PY-2240
据我所知,这种行为是 不 作为检查或其他可配置选项处理,这意味着没有 #noinspection UnusedImport (或等效的)可以放在进口之前。
#noinspection UnusedImport
如果您不想在使用这些变量的地方定义一个未使用的块,那么可以使用另一种简单且可能更好的方法来实现您想要的:
#b.py code import A # [...] your code __all__ = ['A', ...] # *all* the names you want to export
PyCharm很聪明,可以看 __all__ 并避免删除 A 作为未使用的导入 但是有一个限制 __all__ 必须是一个简单的列表文字。您 不能 做的事情如下:
__all__
A
__all__ = ['A'] + [name for name in iterable if condition(name)]
甚至不:
x = 'b' __all__ = ['A', x]
定义 __all__ 是制作模块的最佳实践 * - 无论如何都要进口,所以你应该做的事情也是如此。
*