¿Cómo usar virtualenvwrapper en Supervisor?

Cuando estaba desarrollando y probando mi proyecto, solía usar virtualenvwrapper para administrar el entorno y ejecutarlo:

workon myproject python myproject.py 

Por supuesto, una vez que estaba en el virtualenv correcto, estaba usando la versión correcta de Python y otras bibliotecas correspondientes para ejecutar mi proyecto.

Ahora, quiero usar Supervisord para administrar el mismo proyecto ya que está listo para la implementación. La pregunta es ¿cuál es la forma correcta de decirle a Supervisord que active el virtualenv correcto antes de ejecutar el script? ¿Debo escribir un script de bash separado que haga esto y llamar ese script en el campo de comando del archivo de configuración de Supervisord?

Una forma de usar su virtualenv desde la línea de comandos es usar el ejecutable de Python ubicado dentro de su virtualenv.

Para mí tengo mis envs virtuales en el directorio .virtualenvs . Por ejemplo

/home/ubuntu/.virtualenvs/yourenv/bin/python

no hay necesidad de workon

para un supervisor.conf gestiona una aplicación de tornado lo hago:

 command=/home/ubuntu/.virtualenvs/myapp/bin/python /usr/share/nginx/www/myapp/application.py --port=%(process_num)s 

Agregue su ruta virtualenv / bin a su environment supervisord.conf :

 [program:myproj-uwsgi] process_name=myproj-uwsgi command=/home/myuser/.virtualenvs/myproj/bin/uwsgi --chdir /home/myuser/projects/myproj -w myproj:app environment=PATH="/home/myuser/.virtualenvs/myproj/bin:%(ENV_PATH)s" user=myuser group=myuser killasgroup=true startsecs=5 stopwaitsecs=10 

Primer bash

 $ workon myproject $ dirname `which python` /home/username/.virtualenvs/myproject/bin 

Agrega lo siguiente

 environment=PATH="/home/username/.virtualenvs/myproject/bin" 

a la correspondiente supervisord.conf en la sección [progtwig: blabla].