我想檢查腳本導入的所有模塊是否在我實際運行腳本之前安裝,因爲腳本非常複雜,通常會運行數小時。此外,它可能會根據傳遞給它的選項導入不同的模塊,因此只運行一次可能無法檢查所有內容。所以,我不想在一個新的系統上運行這個腳本幾個小時,只是因爲缺少模塊而在完成之前發現它失敗。如何檢查是否安裝了所有由Python腳本導入的模塊而不運行腳本?
顯然,pyflakes和pychecker在這裏沒有幫助,請糾正我,如果我錯了。我可以做這樣的事情:
$ python -c "$(cat *.py|grep import|sed 's/^\s\+//g'|tr '\n' ';')"
,但它不是很強大的,它會如果單詞「進口」出現在一個字符串,例如打破。
那麼,我該如何正確地完成這項任務?
簡單的解決方案是將grep更改爲'grep'^ \ s * import'',因爲沒有Python行可能以import導入(如果我錯了,請糾正我)。 – FakeRainBrigand 2013-03-04 11:38:31
http://stackoverflow.com/questions/2875232/list-python-package-dependencies-without-loading-them可能是相關的。特別是:http://furius.ca/snakefood/看起來像它做你想要的 – entropy 2013-03-04 11:39:58
@FakeRainBrigand那麼'從進口'?不,任何基於正則表達式的解決方案都太脆弱了。最好的方法是在AST級別工作,而不是在我之前的評論中鏈接的sfoodfood的文本級別(或者至少聲稱,從未嘗試過) –
entropy
2013-03-04 11:41:09