[英]False Unused Import Statement in PyCharm?
鑒於這種情況:
b.py:
import A
# A is unused here
c.py:
from b import A
# A is used here
PyCharm在b.py中抱怨“import A”是一個未使用的導入,Optimize導入會刪除它,打破c.py中的導入
我知道這些鏈式導入不是一個好習慣(雖然你可以用它來實現一個Facade模塊),但是我或者是PyCharm失敗了嗎?
您實際上可以使用PyUnresolvedReferences
標記來取消對import語句的檢查:
# noinspection PyUnresolvedReferences
import A
據我所知,這種行為不作為檢查或其他可配置選項處理,這意味着在導入之前不存在可以放置的#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安全的最佳實踐,所以你應該已經做了。
from C import A, B
assert A is not None and B is not None
# or:
_ = (A, B); del _
適合我。 我不喜歡
# noinspection PyUnresolvedReferences
因為如果無法導入A,它會給出假陰性。 和
__all__ = ['A', 'B', ...]
是神秘的,不便於重構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.