2012-03-16 4 views
0

가상 네트워크를 실행하고 pip를 통해 패키지를 로컬로 설치하려고 시도했습니다. 아래 루틴을 실행할 때 실패 이유에 대한 표시를 내 보내지 않습니다. 나는 Popen("source env/bin/activate && pip install package", shell=True)와 함께 할 수파이썬 하위 프로세스를 통해 순서대로 명령을 쉘 아웃하려고 시도했습니다.

source env/bin/activate

(env) pip install [packages]

다음에 비슷한 일을하려고하지만 나는 내 일상에 정의 된 방법으로 처리 할 것을 희망하고있다.

아이디어가 있으십니까?

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=subprocess.PIPE 또는 stderr=subprocess.STDOUT는 (표준 출력을 리디렉션)를 지정해야 stderr를 얻으려면.

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

를 불행히도 직접 여전히 주사위와 다운로드를 계속 실패 전화 :

당신이 시도 할 수/설치 패키지를 업그레이드하려면 – battlemidget

관련 문제