我应该在 upstart 中 运行 我的应用程序之前激活我的 Python 虚拟环境吗?

Should I activate my Python virtual environment before running my app in upstart?

我正在完成 Superset 应用程序的安装和配置过程。 (一个Flask应用程序,允许实时切片和分析业务数据。)

关于 Python 虚拟环境,我阅读了很多文章和操作指南,了解它如何允许您将包安装到虚拟环境中以保持整洁的概念包含在我的申请中。

既然我正在准备此应用程序供(内部)生产使用,在我的 upstart 脚本中启动 gunicorn 之前,我是否需要激活虚拟环境? 或者虚拟环境更多只是为了开发和 installing/updating 包为我的应用程序? (在这种情况下,我可以直接启动 gunicorn,而无需激活 virtualenv 的额外步骤。)

在我尝试了解 virtualenv 如何在应用程序的日常生产使用和维护中发挥作用时,我将不胜感激。

您应该像在开发机器上一样在生产服务器上激活 virtualenv。它允许您在受控环境中的同一台机器上 运行 多个 Python 应用程序。无需担心一个 virtualenv 中的软件包更新会导致另一个 virtualenv 出现问题。

如果我可以提出建议。我真的很喜欢使用 virtualenvwrapper 来进一步简化 virtualenvs 的使用。它允许您定义挂钩,例如:preactivate、postactivate、predeactivate 和 postdeactivate 使用 $VIRTUAL_ENV/bin/ 中的脚本。这是设置您的 Python 应用程序可以使用的环境变量的好地方。

一个好的简单的过程控制工具是 supervisord