J'essaie d'exécuter une application de base Flask en utilisant Python 3.6. Cependant, j'obtiens un ImportError: cannot import name 'ForkingMixIn'
. Je ne reçois pas cette erreur lors de l'exécution avec Python 2.7 ou 3.5. Comment puis-je exécuter Flask with Python 3.6 ?
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, World!"
Traceback (most recent call last):
File "C:\Python36\lib\site-packages\werkzeug\serving.py", line 65, in <module>
from SocketServer import ThreadingMixIn, ForkingMixIn
ImportError: No module named 'SocketServer'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File ".\fsk.py", line 9, in <module>
app.run()
File "C:\Python36\lib\site-packages\flask\app.py", line 828, in run
from werkzeug.serving import run_simple
File "C:\Python36\lib\site-packages\werkzeug\serving.py", line 68, in <module>
from socketserver import ThreadingMixIn, ForkingMixIn
ImportError: cannot import name 'ForkingMixIn'
Ceci est corrigé à partir de Werkzeug 0.11.15. Assurez-vous d'avoir installé la dernière version de Werkzeug. pip install -U werkzeug
.
Il s'agit d'un problème connu qui était signalé à Werkzeug en prévision de Python 3.6. Tant que ce correctif ou un autre n'a pas été fusionné et publié, le serveur de développement de Werkzeug ne fonctionnera pas = Python 3.6.
Vérifiez si le système d'exploitation peut bifurquer avant d'importer
ForkingMixIn
puisque Python 3.6 ne le définira plus lorsqu'il n'est pas disponible sur le système d'exploitation ( python/cpython @ aadff9b ) etImportError: cannot import name 'ForkingMixIn'
se produira.
En attendant, vous pouvez exécuter votre application avec un serveur WSGI externe tel que Gunicorn.
pip install gunicorn
gunicorn my_app:app
Vous pouvez envelopper votre application dans debug middleware si vous avez besoin du débogueur intégré (tant que vous n'exécutez Gunicorn qu'avec un seul travailleur).