2016-10-18 64 views
-1

我使用os.system()subprocess.call()subprocess.Popen() {有和沒有選擇shell=True}從我的Python腳本內執行module load ___試圖從內部運行「模塊加載< >」命令。即使腳本運行成功,它提到我的模塊已被加載到終端中,但我無法使用它。我正在開發一個ssh客戶端。當我直接作爲命令行運行它時,module load _____工作正常。如何Python腳本

+0

請[格式的代碼正確](http://meta.stackexchange.com/a/22189/248777),並嘗試提供[MCVE(最小的,完整的和可驗證的實例)](http://stackoverflow.com/help/mcve)。 – mklement0

回答

0

我認爲問題是,os.system和subprocess都在...運行命令,以及子進程。所以該模塊在子流程上下文中成功加載並立即存在。儘管在python的流程環境中沒有效果。

我不是現在附近的一臺計算機嘗試一下,這應該工作:

run_py.sh:

pyfile=$1 
shift 1 
python $pyfile $(tty) [email protected] & 

這將運行與第一個參數的路徑你的Python文件當前的tty設備,以及所有其他參數。 解析參數,將tty設備路徑保存爲tty_dev。現在你可以運行:

os.system('echo "module load <>" > ' + tty_dev)