来自 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
}
}
}
关于如何让这个工作的任何想法?或者这是不可能的,我应该在开始时手动输入命令?
最佳答案
通常,当尝试在使用 virtualenv 的同时使用其他工具启动 django 时,正常情况是在一个命令中执行以下两项操作:
所以这最终是:
. ${VIRTUALENVHOME}/bin/activate && ${PROJECTROOT}/manage.py runserver 0:8000
这几乎是使用 Fabric、Ansible 和任何其他自动化工具完成的。
编辑:当然你会提供变量
VIRTUALENVHOME
和 PROJECTROOT
的值关于django - 在 Grunt 中启动 Django 虚拟环境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21943115/