Instalación de Django en todo el sistema para virtualenv

Recientemente implementé una aplicación en línea utilizando la configuración de gota de un solo clic de DigitalOcean que configuró Django en Ubuntu con nginx y gunicorn. Viene con un proyecto django predeterminado que he logrado cambiar por mi cuenta. Sin embargo, el proyecto predeterminado no usa un virtualenv, usa una instalación de todo el sistema. Entonces, la aplicación solo funciona si todas las dependencias están instaladas en el sistema. Lo sé porque si desinstalo django, me da un error interno del servidor.

Me gustaría usar el python en mi virtualenv como intérprete. Y refiérase a los paquetes de sitio en ese entorno. He intentado juguetear con PYTHONPATH y agregar sys.path.append (‘/ home / env / projectname’) al archivo wsgi pero esto no funciona.

¿Cómo puedo conseguir esto?

/etc/init/gunicorn.conf:

setuid django setgid django chdir /home/env/projectname exec gunicorn \ --name=prj \ --pythonpath=prj \ --bind=127.0.0.1:9000 \ --config /etc/gunicorn.d/gunicorn.py \ prj.wsgi:application 

Intente instalar el gunicorn en virtualenv y ejecútelo configurando el directorio de trabajo y pasando la aplicación wsgi :. Este tutorial puede ayudarte. Este tutorial también puede ser útil.

  1. No use el nombre “venv” para virtualenvs, porque venv es una cosa similar pero diferente. “venv” y “virtualenv” son formas diferentes de crear entornos aislados; venv es la nueva forma, pero solo está disponible para Python 3.3 y versiones posteriores, por lo que virtualenv es aún más utilizado.
  2. Para evitar confusiones, recuerde que virtualenv (y venv, para el caso) está mal llamado. No hay nada virtual al respecto. Debería ser mejor llamado un ambiente aislado.

Ahora, gunicorn es un progtwig de Python. No ejecuta tu proyecto Django; Importa tu proyecto Django. Por lo tanto, no es posible ejecutar gunicorn y su proyecto Django en diferentes entornos, porque en realidad son un solo progtwig. La forma de ejecutar su proyecto Django en un entorno aislado específico es iniciar Gunicorn en ese entorno aislado:

 source your_virtualenv_dir/bin/activate exec gunicorn ... 

Para que esto funcione, debe haber instalado gunicorn en virtualenv, o debe haber instalado gunicorn en todo el sistema y haber creado virtualenv con --system-site-packages .

Véase también este artículo mío .