在Grunt中启动Django虚拟环境

时间:2014-02-21 19:07:17

标签: django gruntjs virtualenv

来自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
    }
  }
}

有关如何使这项工作的任何想法?或者这是不可能的,我应该在开始时手动输入命令?

1 个答案:

答案 0 :(得分:5)

通常在尝试使用其他工具在使用virtualenv时启动django时,通常情况是在一个命令中执行以下两个操作:

  1. 激活virtualenv
  2. 运行您想要的命令。
  3. 所以这最终成为:

    . ${VIRTUALENVHOME}/bin/activate && ${PROJECTROOT}/manage.py runserver 0:8000

    这与Fabric,Ansible和任何其他自动化工具完全相同。

    编辑:当然,您要提供变量值VIRTUALENVHOMEPROJECTROOT