Ho un'app di base "ciao mondo" Flask in esecuzione.Ottenere Flask per usare Python3 (Apache/mod_wsgi)
Sono su Ubuntu 14.04, utilizzando Apache 2.4. Ho installato mod_wsgi.
Ho creato un ~/web/piFlask/venv/
per contenere un Python2 creato da virtualenv con il pallone installato.
Tuttavia, desidero che il mio flaskapp importi un modulo Python3.x che ho scritto.
Cosa devo fare per rendere questo accada?
Ho cercato di creare un ~/web/piFlask/venv3/
e modifica ~/web/piFlask/piFlask.wsgi
:
import os, sys
PROJECT_DIR = '/home/pi/web/piFlask'
activate_this = os.path.join(PROJECT_DIR, 'venv3/bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, PROJECT_DIR)
from piFlask import app as application
application.debug = True
Ma io non credo che questo sia sufficiente. Questo .wsgi è in effetti un file Python che verrà eseguito da mod_wsgi, che sicuramente userò un interprete Py2.x per eseguire l'esecuzione.
Quindi, se sto capendo correttamente, mod_wsgi attiva il sistema Python per eseguire questo .wsgi, che a sua volta spegne il mio interprete ~/web/piFlask/venv/
per elaborare effettivamente la richiesta.
penso che potrei convincere mod_wsgi ad utilizzare un sistema di python3 o il mio venv3/... impostando WSGIPythonPath /home/pi/web/piFlask/venv3/lib/python3.4/site-packages
in /etc/apache2/mods-available/wsgi.conf
ma ho trovato da qualche parte un'istruzione dicendo che devi compilare mod_wsgi per Py3, e il fondo cade rapidamente a questo problema.
sto andando a bersaglio solo python3. Sembra che ci sia 'libapache2-mod-wsgi-py3' - potrei invece farlo: 1. a2disable mod_wsgi, 2. disinstallare mod_wsgi usando pip, 3. installare libapache2-mod-wsgi-py3 usando pip3? –
Sì. Fintanto che tutto il codice e tutti i moduli Python di terze parti di cui hai bisogno sono compatibili con Python 3. Tutto dovrà essere installato nel tuo ambiente virtuale Python 3. Non è possibile mescolare parti da ambienti virtuali per diverse versioni di Python. –