鑑於這種情況:錯誤PyCharm中未使用的導入語句?
b.py:
import A
# A is unused here
c.py:
from b import A
# A is used here
PyCharm抱怨在b.py說, 「導入」 是一個未使用的導入和優化進口刪除它,打破導入c.py
我知道這些鏈式導入不是一個好的做法(雖然你可能會用它來實現一個門面模塊),但它是我還是這是PyCharm失敗嗎?
鑑於這種情況:錯誤PyCharm中未使用的導入語句?
b.py:
import A
# A is unused here
c.py:
from b import A
# A is used here
PyCharm抱怨在b.py說, 「導入」 是一個未使用的導入和優化進口刪除它,打破導入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安全無論如何,所以是你應該已經做一些事情。
謝謝,我喜歡你的解決方案。 –
完美答案謝謝! – TheWhiteLlama
實際上,你可以使用PyUnresolvedReferences
標記停用檢查你的import語句:
# noinspection PyUnresolvedReferences
import A
這解決了我的問題!你的回答幫我找到了一個包含所有標記的完整列表,在http://codeoptimism.com/blog/pycharm-suppress-inspections-list/ – kunambi
是你。如果你想要解決這個IDE行爲,只需在你使用這些變量的地方添加一個「if False:」塊,以便Optimize導入不會觸及它們。 – Bakuriu
我正在處理大型項目中的現有代碼。另外,我不覺得爲IDE編寫代碼是一個好主意。這是噪音,尤其是使用其他工具的貢獻者。 –
「失敗」有點苛刻,是一個小缺點,但沒有任何方法可以輕鬆獲得100%的正確行爲(您可以儘可能混淆使用A)。如果A在它不應該被移除的情況下被移除,這就是您的buildbot/jenkins /持續集成設置應該在閃存中提取的那種問題。 – wim