2014-05-02 11 views
5

OpenShift ha recentemente pubblicato un libro "Guida introduttiva a OpenShift". È una buona guida per qualcuno che sta appena iniziando.Utilizzo di Python 3.3 nell'esempio di libro di OpenShift

Nel Capitolo 3 viene illustrato come modificare un'applicazione modello per utilizzare Python 2.7 e Flask. Il nostro requisito è per Python 3.3.

Nella pagina 19, una delle modifiche a wsgi.py è: execfile (virtualenv, dict (file = virtualenv)). execfile è stato eliminato con 3.x. Ci sono esempi in StackOverflow su come tradurre ma non mi è chiaro come applicarli a questo caso.

Qualcuno ha qualche idea in merito a questo problema?

+1

Non ho letto i nuovi documenti. Sembra ancora che non siano completi. Ci sono in realtà due punti di accesso per avviare la tua app Python. Wsgi.py e app.py. Utilizzare wsgi.py se si utilizza il server Apache del sistema operativo. app.py se si desidera utilizzare il proprio server (cherrypy, waitress, server semplice). Posso darti il ​​codice di avvio domani quando sono accanto al mio computer. –

+0

L'utente si riferisce effettivamente a questo libro https://www.openshift.com/blogs/announcing-a-new-book-getting-started-with-openshift-a-guide-per-impazient-beginners che non mira per essere completo – TheSteve0

+0

Sembra che la tua domanda esatta sia stata fornita sotto. Se aiuti ancora a far funzionare tutto, fammelo sapere. –

risposta

4

Come indicato nella this question, è possibile sostituire la linea

execfile(virtualenv, dict(__file__=virtualenv)) 

da

exec(compile(open(virtualenv, 'rb').read(), virtualenv, 'exec'), dict(__file__=virtualenv)) 

A mio parere, sarebbe meglio per rompere questo in su in alcuni pezzi più semplici. Inoltre dovremmo usare un gestore contesto per la gestione dei file ::

with open(virtualenv, 'rb') as exec_file: 
    file_contents = exec_file.read() 
compiled_code = compile(file_contents, virtualenv, 'exec') 
exec_namespace = dict(__file__=virtualenv) 
exec(compiled_code, exec_namespace) 

Rottura in su in questo modo sarà anche rendere più facile il debug (in realtà: possibile). Non ho provato questo, ma dovrebbe funzionare.

+2

Mille grazie a cjrh per le sue risposte e alla fantasia per la sua offerta di ulteriore aiuto. Entrambe le risposte hanno funzionato bene. Ora è chiaro come integrare Flask per OpenShift usando Python v3.3. Il codice per questo risultato può essere scaricato da http://informationanthology.net/literature.zip. Chiunque è il benvenuto a partecipare. – user3501978

+0

Grazie per aver reso disponibile il codice – TheSteve0

0

Se si riscontrano problemi con le impostazioni virtualenv sul file wsgi.py in Python3, è stato risolto il problema.

Questo è il mio file wsgi.py e sta funzionando

#!/usr/bin/python 

from flaskapp import app as application 

if __name__ == '__main__': 
    from wsgiref.simple_server import make_server 
    httpd = make_server('0.0.0.0', 5000, application) 
    # Wait for a single request, serve it and quit. 
    #httpd.handle_request() 
    httpd.serve_forever() 
Problemi correlati