2012-03-16 25 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