鉴于这种情况:

b.py:

import A
# A is unused here

c.py:
from b import A
# A is used here

PyCharm 在 b.py 中提示“import A”是一个未使用的导入,优化导入将其删除,破坏了 c.py 中的导入

我知道这些链式导入不是一个好习惯(尽管您可能会使用它来实现外观模块),但是是我还是 PyCharm 失败了?

最佳答案

据我所知,这种行为不是作为检查或其他一些可配置选项处理的,这意味着在导入之前不能放置 #noinspection UnusedImport(或等效项)。

如果您不想在使用这些变量的地方定义一个未使用的块,还有另一种简单且可能更好的方法来实现您想要的:

#b.py code
import A

# [...] your code


__all__ = ['A', ...]  # *all* the names you want to export

PyCharm 足够聪明,可以查看 __all__ 并避免将 A 作为未使用的导入删除。
但是有一个限制,即 __all__ 必须是一个简单的列表文字。你不能做这样的事情:
__all__ = ['A'] + [name for name in iterable if condition(name)]

甚至不:
x = 'b'
__all__ = ['A', x]

定义 __all__ 是使您的模块 * -import 安全的最佳做法,因此您应该已经这样做了。

关于python - PyCharm 中的错误未使用导入语句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21139329/

10-16 22:44