2015-01-08 10 views
11

Ho una cartella denominata python2.7 all'interno di lib nell'ambiente virtuale.Dove dovrebbe WSGIPythonPath puntare nel mio virtualenv?

Dopo aver letto una mezza dozzina di esercitazioni, non riesco a capire esattamente cosa dovrei puntare a WSGIPythonPath. Ho visto alcuni che puntavano a site-packages ma alcuni sono stati un elenco di punti separati : due punti.

Syntax error on line 1019 of /etc/httpd/conf/httpd.conf: 
WSGIPythonPath cannot occur within <VirtualHost> section 

Dove deve essere WSGIPythonPath nel mio virtualenv?

+0

Qual è la configurazione? Stai cercando di eseguire un'applicazione web tramite Apache (tramite Mod_WSGI)? O un altro server web? Dove nello specifico stai tentando di impostare "WSGIPythonPath"? – Timusan

+0

Apache e mod_wsgi, si.Cercando di impostare "WSGIPythonPath" nel file di configurazione di apache per '' – user83039

+0

E stai utilizzando Mod_WSGI in modalità daemon o in modalità incorporata? Potrebbe anche essere utile postare la tua voce di configurazione VirtualHost/Apache insieme alla tua domanda. – Timusan

risposta

12

hai trovato l'errore perché WSGIPythonPath direttiva non può essere utilizzato all'interno del VirtualHost contesto. Devi dichiararlo nel tuo file di configurazione principale di Apache. Se vuoi comunque puntare alle directory nel tuo virtualenv all'interno del contesto VirtualHost, usa invece la direttiva WSGIDaemonProcess, che ha un'opzione path-python per dichiarare le tue directory python rilevanti.

Per esempio: il file di configurazione dell'host virtuale dovrebbe essere simile a questo:

<VirtualHost *:80> 
ServerName example.com 
CustomLog logs/example.com-access_log common 
ErrorLog logs/example.com-error_log 

WSGIDaemonProcess example.com python-path=/virtualenvpathto/site-packages:/pathto/exampleprojecthome 
WSGIProcessGroup example.com 

... 
</VirtualHost> 

Il colon pieno : viene utilizzato quando si dispone di più di una directory Python che si desidera aggiungere a $ Variabile d'ambiente PYTHON_PATH in modo che l'esempio di importazione import.foo funzioni correttamente. Nell'esempio sopra, ci sono due directory, potrebbero essere più o meno a seconda di come hai impostato il tuo progetto.

Se si utilizza Windows, utilizzare il punto e virgola; invece dei due punti pieni.

Spero che questo aiuti.

0

Ecco la documentazione ufficiale: https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/#using-a-virtualenv

Utilizzando un virtualenv¶

Se si installa dipendenze Python del vostro progetto all'interno di un virtualenv, sarà necessario aggiungere il percorso di questo sito-virtualenv pacchetti directory al tuo percorso Python pure. Per fare ciò, aggiungi un ulteriore percorso alla tua direttiva WSGIPythonPath, con più percorsi separati da da due punti (:) se si utilizza un sistema simile a UNIX o un punto e virgola (;) se utilizzando Windows. Se una parte di un percorso di directory contiene un carattere di spazio , la stringa argomento completa per WSGIPythonPath deve essere citato:

> WSGIPythonPath 
> /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages 

assicuratevi di dare il percorso corretto per la virtualenv, e sostituire python3 .X con la versione corretta di Python (es. Python3.4).

+2

Questo collegamento non sta usando migliori pratiche. Dovresti usare '' WGIPythonHome'' per fare riferimento all'ambiente virtuale quando usi la modalità incorporata e l'opzione '' python-home'' quando usi la modalità demone. Vedi: http://blog.dscpl.com.au/2014/09/using-python-virtual-environments-with.html –

Problemi correlati