来自 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 时,正常情况是在一个命令中执行以下两项操作:

  • 激活 virtualenv
  • 运行你想要的命令。

  • 所以这最终是:
    . ${VIRTUALENVHOME}/bin/activate && ${PROJECTROOT}/manage.py runserver 0:8000
    这几乎是使用 Fabric、Ansible 和任何其他自动化工具完成的。

    编辑:当然你会提供变量 VIRTUALENVHOMEPROJECTROOT 的值

    关于django - 在 Grunt 中启动 Django 虚拟环境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21943115/

    10-11 22:14
    查看更多