python – subprocess.Popen:找不到mkvirtualenv

我在部署中使用virtualenvwrapper.为了设置新环境,我正在运行一个包含所有必需步骤的python脚本.

setupscript包括:

cmd = 'mkvirtualenv %s --no-site-packages'%('testname')
head = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in head.stdout.read().splitlines():
    print line

输出是:

/bin/sh: mkvirtualenv: not found

如何在我的python脚本中正确使用virtualenvwrapper?

编辑:

以下代码适用于我:

cmd = 'source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv %s --no-site-packages'%('testname')
head = subprocess.Popen(cmd, executable='bash', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in head.stdout.read().splitlines():
    print line

谢谢你的所有答案.

解决方法:

mkvirtualenv可能是一个shell函数,它通过获取virtualenvwrapper.sh script from your shell’s startup file添加到您的环境中.在shell = True上调用的默认命令(例如/ bin / sh -c …)可能无法读取它.

您可以显式地获取文件:

import pipes
from subprocess import check_call

check_call("""source /path/to/virtualenvwrapper.sh &&
    mkvirtualenv --no-site-packages """ + pipes.quote(envname),
    executable='bash', shell=True)
上一篇:CentOS7安装python3及虚拟环境


下一篇:Python 使用 virtualenvwrapper 安装虚拟环境