2012-03-16 62 views
0

我試圖通過本地運行virtualenv並通過pip安裝軟件包。當運行下面的例程時,沒有輸出結果給我任何跡象,說明它爲什麼失敗。我試圖做類似的東西以下試圖通過python子進程按順序釋放命令

source env/bin/activate

(env) pip install [packages]

我可以Popen("source env/bin/activate && pip install package", shell=True)做,但什麼希望處理它在我有它在我的日常定義方式。

任何想法?

def install_pkgs(self): 
    proc = subprocess.Popen(["source %s" % (os.path.join(self._commons['dst_dir'], 'env/bin/activate'),)], 
          stdin=subprocess.PIPE, 
          stdout=subprocess.PIPE, 
          shell=True, 
          executable='/bin/bash') 
    proc.stdin.write(str.encode("pip install --upgrade %s\n" % (" ".join(self._loaded_packages),))) 
    output, error = proc.communicate() 
    print(output) 
    print(error) 

回答

0

爲了得到stderr應指定stderr=subprocess.PIPEstderr=subprocess.STDOUT(將其重定向到標準輸出)。

安裝/升級軟件包,你可以嘗試:

subprocess.check_call(['/path/to/virtualenv/bin/pip', 'install', '-U'] + packages) 
+0

不幸的是調用它直接仍然無法繼續下載使用PIP – battlemidget 2012-03-16 19:59:34