我在部署中使用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)