簡體   English   中英

如何在Python中通過“無命令行活動”來觸發下一個軟件包的安裝

[英]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()運行安裝中涉及的每個命令,它將在執行下一步之前等待進程返回。 大多數其他安裝方式也是如此。

通常,除非您顯式使用某種形式的並發 (或其他使用這種形式的並發 ,在文檔中幾乎肯定會這樣說),否則它將等待。

因此,如果您的安裝命令存儲在cmd1cmd2等變量中,並且啟動后沒有任何輸入:

# 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM