[英]How to trigger next package installation by “no command line activity” in Python
我在Python中為應用程序構建安裝向導。 識別包括的所有命令-在運行之前需要-安裝大約20個不同的軟件包(項目使用不同的計算類型,例如:SVM,FFT,3D諧波,K近鄰,以及用於命令行和GUI的其他軟件包)。
所有軟件包-需要一個接一個地,依次安裝(一個安裝完成,然后我要開始下一個軟件包安裝)。 在安裝過程中-有不同的打印狀態指示,安裝時會自動打印(不是我)。
最終-所有命令行打印停止,而這種“ CMD活動不足”-我想成為觸發器(由我的項目運行)以安裝下一個Python軟件包的下一個命令。 我想我可能會以某種方式使用“ stdout”空度或其他系統實體。 請說明如何實現,或提供簡短示例,或鏈接到示例。 提前致謝。
編程中大多數事情的默認狀態是等待函數/方法/過程返回后再繼續。 例如,如果使用subprocess.run()運行安裝中涉及的每個命令,它將在執行下一步之前等待進程返回。 大多數其他安裝方式也是如此。
通常,除非您顯式使用某種形式的並發 (或其他使用這種形式的並發 ,在文檔中幾乎肯定會這樣說),否則它將等待。
因此,如果您的安裝命令存儲在cmd1
, cmd2
等變量中,並且啟動后沒有任何輸入:
# some code
subprocess.run(cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)
subprocess.run(cmd2, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)
# whatever follows that
將運行cmd1
,然后在cmd1
完成時運行cmd2
,將每個的stdout
輸出放到現有的stdout
,並引發CalledProcessError
並在任何一個返回非零值時停止。
請注意,如果您改為觀看stdout
,則如果速度較慢,則結果可能會中斷-較長的空白期而實際上並未完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.