Vedi qualcosa di sbagliato con il mio tentativo di ottenere Flask in esecuzione? (Mod_wsgi + virtualenv)

StackOverflow https://stackoverflow.com/questions/4420218

Domanda

Ho un VPS in esecuzione di una nuova installazione di Ubuntu 10.04 LTS. Sto cercando di creare un'applicazione dal vivo utilizzando il microframework Flask, ma mi sta dando problemi. Ho preso appunti mentre ho cercato di farlo funzionare ed ecco la mia play-by-play, nel tentativo di individuare esattamente dove ho sbagliato.

Installazione

http://flask.pocoo.org/docs/installation/#installation

$ adduser myapp
$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

/home/myapp/
-- www/

$ sudo pip install virtualenv

/home/myapp/
-- www/
-- env/

$ . env/bin/activate
$ easy_install Flask

mod_wsgi

http://flask.pocoo.org/docs/deploying/mod_wsgi/

$ sudo apt-get install apache2
$ sudo apt-get install libapache2-mod-wsgi

La creazione di file WSGI

$ nano /home/myapp/www/myapp.wsgi

--myapp.wsgi contents:--------------------------
activate_this = '/home/myapp/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
from myapp import app as application

/home/myapp/
-- www/
     -- myapp.wsgi
-- env/

Configurazione di Apache

$ nano /etc/apache2/sites-available/myapp.com

-----myapp.com file contents ---------------------
<VirtualHost *:80>
    ServerName myapp.com

    WSGIDaemonProcess myapp user=myapp group=myapp threads=5 python-path=/home/myapp/env/lib/python2.6/site-packages

    WSGIScriptAlias / /home/myapp/www/myapp.wsgi

    <Directory /home/myapp/www>
        WSGIProcessGroup myapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

Attiva il file host virtuale Ho appena creato

$ cd /etc/apache2/sites-enabled
$ ln -s ../sites-available/myapp.com

Riavviare Apache

$ /etc/init.d/apache2 restart

Server me una pagina di errore 500 del server. Ecco l'ultima log degli errori:

mod_wsgi (pid=3514): Target WSGI script '/home/myapp/www/myapp.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=3514): Exception occurred processing WSGI script '/home/myapp/www/myapp.wsgi'.
Traceback (most recent call last):
File "/home/myapp/www/myapp.wsgi", line 4, in <module>
from myapp import app as application
ImportError: No module named myapp

Gli errori alludono che si tratta di qualcosa di straordinariamente ovvio, ma sono abbastanza perso.

È stato utile?

Soluzione

Ovviamente, non si riesce a trovare il pacchetto "myapp". Si dovrebbe aggiungere al percorso nel file myapp.wsgi in questo modo:

import sys
sys.path.append(DIRECTORY_WHERE_YOUR_PACKAGE_IS_LOCATED)
from myapp import app

Inoltre, se il modulo myapp è un pacchetto, si dovrebbe mettere il file e __init__.py vuoto nella sua directory.

Altri suggerimenti

Modifica linea sys.path.append, ha bisogno di essere una stringa.

import sys
sys.path.append('directory/where/package/is/located')

Avviso le virgolette singole.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top