Esecuzione di Python da un virtualenv con Apache / mod_wsgi, su Windows
-
26-09-2019 - |
Domanda
Sto cercando di configurare il server WAMP. Ho Apache funziona correttamente, e ho installato mod_wsgi senza intoppi.
Il problema è che sto usando ambienti virtuali (usando virtualenv) per i miei progetti. Così, ovviamente, mod_wsgi sta avendo problemi di localizzare la mia installazione di Django.
Sto cercando di capire come posso ottenere mod_wsgi per lavorare bene con i virtualenvs. La documentazione sembra pensare questo non è possibile:
Si noti che la direttiva WSGIPythonHome può essere utilizzato solo su sistemi UNIX e non è disponibile sui sistemi Windows. Questo perché nei sistemi Windows il percorso della DLL Python sembra essere quello in cui dettami Python cercherà i file di libreria Python. Non si sa a questo punto, come si possa creare un ambiente distinto di base indipendente dalla installazione principale di Python su Windows.
Da qui:. mod_wsgi + virtualenv docs
Qualcuno ha qualche idea su come fare questo lavoro?
Soluzione
È possibile attivare l'ambiente di programmazione Python da aggiungere questo al file .wsgi prima di importare qualsiasi altra cosa.
A volte non si può o non si vuole utilizzare l'interprete Python creato da il virtualenv. Ad esempio, in un mod_python o ambiente mod_wsgi, c'è solo un interprete.
Per fortuna, è facile. È necessario utilizzare il personalizzato interprete Python per l'installazione librerie. Ma per utilizzare le librerie, è basta per essere sicuri che il percorso è corretta. Uno script è a disposizione correggere il percorso. È possibile impostare la ambiente come:
activate_this = '/path/to/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this))
Questo cambierà sys.path e anche cambiare sys.prefix, ma anche di consentire di utilizzare un interprete esistente. Elementi nel proprio ambiente verrà visualizzato prima su sys.path, prima delle operazioni globali. Tuttavia, questo non può annullare il attivazione di altri ambienti, o I moduli che sono stati importati. voi non dovrebbe cercare di, per esempio, attivare un ambiente prima di una web richiesta; si dovrebbe attivare una ambiente il più presto possibile, e Non farlo di nuovo in quel processo.