2010-06-27 37 views
3

我想用Python編寫一些Python包安裝腳本到virtualenv中。我寫一個函數來安裝的virtualenv如何在Python中運行上下文感知命令?

def prepareRadioenv(): 
    if not os.path.exists('radioenv'): 
     print 'Create radioenv' 
     system('easy_install virtualenv') 
     system('virtualenv --no-site-package radioenv') 
    print 'Activate radioenv' 
    system('source radioenv/bin/activate') 

我嘗試使用「源radioenv /斌/激活」來激活虛擬環境中,不幸的是,使用os.system創建一個子做的命令。激活所做的環境更改會隨着子流程而消失,但不會影響Python進程。問題在於,我如何在Python中執行一些上下文感知命令序列?

又如:

system("cd foo") 
system("./bar") 

在這裏,CD好好嘗試影響下面的系統( 「條」)。如何讓這些環境生活在不同的命令中?

有沒有類似上下文感知的shell?所以我可以這樣寫一些Python代碼:

shell = ShellContext() 
shell.system("cd bar") 
shell.system("./configure") 
shell.system("make install") 
if os.path.exists('bar'): 
    shell.system("remove") 

謝謝。

回答

3

要在Python中激活virtualenv,請使用execfileactivate_this.py腳本(使用virtualenv創建)。

activate_this = os.path.join("path/to/radioenv", "bin/activate_this.py") 
execfile(activate_this, dict(__file__=activate_this)) 
1

您試圖將Python用作shell嗎?

在由丹尼爾·羅斯曼,這似乎是你所需要的最重要的部分答案的同時,應注意:

shell.system("cd bar") 

Python中的拼寫爲:

os.chdir("bar") 

檢查os模塊可用於您似乎需要的其他功能,如rmdir,removemkdir