虚拟环境在生产环境中应该放在哪里?

9
使用virtualenv(或virtualenvwrapper)时,推荐的做法是将所有虚拟环境分组放在一起...例如在~/.virtualenvs中。
但是,在阅读了许多有关部署Django应用程序的文章后,我注意到推荐将虚拟环境放在个别Web应用程序的根目录下...例如在/srv/www/example.com/venv中。
我的问题是:
1.为什么?
2.我采取其中一种方式会有影响吗?
3.是否推荐一种方式优于另一种?

如果您在服务器上只有一个项目,则不需要使用virtualenv。如果您有多个项目,则安装virtualenv,您可以将环境放置在任何您想要的位置,例如./home/ /www/。 - Praveen Singh Yadav
5
即使您只有一个项目,使用virtualenv来将项目依赖与系统Python隔离开来仍然是有好处的。这样可以避免系统升级破坏您的项目,反之亦然。像pip freeze这样的工具将反映项目的要求,而不是系统Python的状态,后者可能包含不需要的额外软件包。对于Django项目,使用virtualenv是最佳实践。 - StvnW
1个回答

2
以下是我的想法:

将虚拟环境放在公共文件夹中的理由

  • 更干净的管理给定计算机上的多个虚拟环境。有好的工具支持检查可用性、添加新的、清除旧的等等。
  • 当在一个以上的项目中共享一个或多个虚拟环境时,更明智(也更节省空间)
  • 允许使用一些不错的功能,如虚拟环境名称的自动完成

将虚拟环境保留在项目中的理由

  • 虚拟环境与项目之间的关系更为明确。消除了任何歧义,并且不容易出错,因为很少有机会运行错误的虚拟环境(这并不总是立即显而易见)。
  • 当虚拟环境和项目之间是一对一的关系时,更有意义
  • 在从不同账户的团队中工作时可能是首选方法。
  • 在部署到相同主机时更直接;(只需rsync整个项目)。没有什么可以阻止您在公共文件夹中使用虚拟环境进行这样的操作,但使用单个树来部署更自然。
  • 更容易对整个应用程序进行沙盒处理。

我倾向于在更实验性/早期阶段的工作中使用前者,在已部署的项目中使用后者。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接