2012-03-16 8 views
0

virtualenvを実行してpipをローカルにインストールしようとしています。以下のルーチンを実行すると、なぜ失敗したのかについて私に何らかの兆候を出すことはできません。私はPopen("source env/bin/activate && pip install package", shell=True)でそれを行うことができますpythonサブプロセスでコマンドを連続してシェルしようとしています

source env/bin/activate

(env) pip install [packages]

次のような何かをしようとしているが、私はそれが私のルーチンで定義されている方法でそれを処理するために期待しています。

アイデア?あなたが(stdoutにそれをリダイレクトする)stderr=subprocess.PIPEまたはstderr=subprocess.STDOUTを指定する必要がありstderr取得するには

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

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

残念ながらまだピップでダウンロードを続行するために失敗し、それを直接呼び出す:あなたが試みることができるパッケージがアップグレード/インストールするには

battlemidget

関連する問題