鉴于这种情况:
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/