2016-02-25 136 views
0

我有一個非常基本的subprocess.Popen命令,如:爲什麼PyCharm會殺死我的子進程.Popen?

cmd = ['docker', 'run', '--name=test','server'] 
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, 
        stderr=subprocess.PIPE) 

當我從終端Python腳本運行此,這正常啓動泊塢窗圖像和圖像一直持續到我docker stop它。

但是,當我從PyCharm 5運行相同的代碼時,上面的行完成時立即停止泊塢窗圖像。

我已經在調試器中驗證了這一點(運行docker ps -a顯示此圖片在PyCharm啓動時立即死亡)。

爲了在PyCharm下運行時保持我的子進程打開,我需要做些什麼?不能運行調試器是非常煩人的。

+0

愚蠢的問題,但你配置碼頭運行在PyCharm根據本指南:https://blog.jetbrains.com/pycharm/2015/12/using-docker-in-pycharm/。 PyCharm的一個特點是支持docker。因此,您可能需要按照自己的配置對其進行更友好的用戶界面,才能使其運行正常。 – idjaw

+0

@idjaw - 糾正我,如果我錯了,但不是關於使用Python解釋器作爲PyCharm解釋器在Docker容器中運行的博客文章?看起來他只需要執行子進程調用。 – BingsF

+0

@BingsF是的,但是,有一部分文檔解釋瞭如何連接到碼頭集裝箱。這可能是缺失的一塊。 – idjaw

回答

-2

您打印出Popen調用(stdout和stderr)的輸出嗎?它說什麼?

從IDE啓動子進程可能會非常棘手,因爲某些環境變量(如PATH)可能無法以與shell相同的方式進行設置。

+1

這不是一個答案。它應該是一個評論。 –