使用 Capistrano 激活 Virtualenv Wrapper

Activate Virtualenv Wrapper with Capistrano

我正在尝试使用 Capistrano 部署 Django 项目。 Capistrano 将代码部署到我的服务器并完成部署步骤。

但是当我尝试添加这样的自定义任务时...

task :collect_static do
  on roles(:app) do |host|
    execute "cd #{release_path}/myproject"
    execute "workon myproject"
    execute "./manage.py collectstatic"
  end
end

after "deploy:updated", "collect_static"

它抛出以下错误...

02 bash: workon: command not found

部署后,如果我手动通过 SSH 连接到服务器并使用 运行 workon 命令,它可以正常工作(同一用户)。只是 Capistrano 不认识它?

workon 不是程序,而是来自 virtualenvwrapper 的 shell 函数。要 bash 找到它,您必须在 shell.

中找到 virtualenvwrapper.sh