来自JS / Node开发背景,我喜欢使用Grunt进行大量的自动化操作。对于最近的一个项目,我选择了一些婴儿Django,以了解它的运作方式,但仍然希望将Grunt集成到我的一些工作流程中。
我目前正在使用spawn-shell模块通过Grunt启动我的Django服务器。这很好用,但我也使用了virtualenv设置,并希望通过Grunt启动它。
我用来启动虚拟环境的命令是:
source ./venv/bin/activate
从终端命令行可以正常工作。但是,从grunt shell或grunt exec执行此命令不会执行任何操作。我没有从Grunt那里得到任何错误(它说运行,然后完成没有错误),但没有任何错误开始。
grunt exec命令如下:
exec: {
start: {
cmd: function() {
return "source ./venv/bin/activate";
}
}
}
shell命令是:
shell:{
start: {
command: 'source ./venv/bin/activate',
options: {
stdout: true
}
}
}
有关如何使这项工作的任何想法?或者这是不可能的,我应该在开始时手动输入命令?
答案 0 :(得分:5)
通常在尝试使用其他工具在使用virtualenv时启动django时,通常情况是在一个命令中执行以下两个操作:
所以这最终成为:
. ${VIRTUALENVHOME}/bin/activate && ${PROJECTROOT}/manage.py runserver 0:8000
这与Fabric,Ansible和任何其他自动化工具完全相同。
编辑:当然,您要提供变量值VIRTUALENVHOME
和PROJECTROOT