/ / Come fa un'app django a iniziare è virtualenv? - Django, virtualenv

Come fa un'app django a iniziare è virtualenv? - Django, virtualenv

Sto cercando di capire come l'ambiente virtualeviene invocato. Il sito Web a cui sono stato affidato il compito di gestire ha una directory .venv. Quando scrivo nel sito per lavorarci sopra capisco che devo invocarlo con source .venv / bin / activate. La mia domanda è: in che modo l'applicazione web richiama l'ambiente virtuale? Come faccio a sapere che sta usando il .venv, non il python globale?

Più dettagli: è un sito Drupal con Django su cui è incastonato, Apache è il server principale, credo che Django sia servito da Gunicorn. _

risposte:

0 per risposta № 1

Basta usare il percorso assoluto quando si chiama python in virtualenv.
Ad esempio, il tuo virtualenv si trova in /var/webapps/yoursite/env
Quindi devi chiamarlo /var/webapps/yoursite/env/bin/python


0 per risposta № 2

Se si utilizza Django solo dietro un proxy inverso, Django utilizzerà qualunque sia l'ambiente python per l'utente che ha avviato il server è stato determinato in which python comando. Se stai usando uno strumento di gestione come Gunicorn, puoi specificare quale ambiente usare in queste configurazioni, anche se la stessa Gunicorn ci richiede di attivare l'ambiente virtuale prima di invocare Gunicorn MODIFICARE: Dal momento che stai usando Gunicorn, dai un'occhiata a questo, https://www.digitalocean.com/community/tutorials/how-to-deploy-python-wsgi-apps-using-gunicorn-http-server-behind-nginx


0 per risposta № 3

Ok, ho trovato come, nel mio caso, il virtualenv veniva invocato per il django.

Lo script BASE_DIR / run / gunicorn ha:

#GUNICORN="/usr/bin/gunicorn"
GUNICORN=".venv/bin/gunicorn"
GUNICORN_CONF="$BASE_DIR/run/gconf.py"
.....
$GUNICORN --config $GUNICORN_CONF --daemon --pid $PIDFILE $MODULE

Quindi questo ci porta nel .venv dove inizia lo script gunicorn:

#!/media/disk/www/aavso_apps/.venv/bin/python

Ecco