在python脚本中激活/停用virtualenv

时间:2014-08-26 14:28:52

标签: python shell virtualenv openshift

我正在使用OpenShift,而我正在使用自定义挂钩。主要是:

  • 开始(申请开始)
  • 停止(申请停止)
  • pre_build
  • post_deploy

由于我已经尝试过的原因,我没有使用服务于python / nginx的第三方盒式磁带(它在本主题中给出了一些错误)。

所以我不得不坚持手动安装nginx,并确保相应地启动和停止。

现在:我的应用程序使用nginx因为我需要websockets,而我找到的最好的库是相当现代的。因此,对于我的应用程序,我必须使用gunicorndjango-gevent-websockets

对于许多语言问题,我拒绝使用shell脚本,而是使用了python:

#!/usr/bin/env python
...

并且,在执行复杂任务后,我使用以下逻辑运行os.system多个命令:

  • 启动虚拟环境
  • 安装最近的gunicorn(如果没有安装)
  • 安装websockets库(如果没有安装)
  • 离开虚拟环境
  • pkill httpd processes
  • 启动nginx

始终将这些命令回显到控制台(print他们)。但我发现了一个错误:

sh: command deactivate not found.

这意味着:在执行该命令时,某种程度上我们不在virtualenv中。我不知道我是否对此,但似乎os.system为每个调用创建了一个不同的环境,因此:在start the virtualenv步之后,我不再是虚拟环境了。

问题:如何在调用之间保留shell上下文,以便activate调用在后续系统调用中生效?这意味着:我希望能够将这些包放在virtualenv中,并执行相关的东西。

此OpenShift应用程序使用Python盒式磁带(Apache附带)。

0 个答案:

没有答案