2016-08-29 9 views
18

Я пытаюсь запустить базовое приложение Flask с использованием Python 3.6. Тем не менее, я получаю ImportError: cannot import name 'ForkingMixIn'. Я не получаю эту ошибку при работе с Python 2.7 или 3.5. Как запустить Flask с Python 3.6?Running Flask dev сервер в Python 3.6 вызывает ImportError для SocketServer и ForkingMixIn

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' 

ответ

28

Это исправлено в Werkzeug 0.11.15. Убедитесь, что вы установили последнюю версию Werkzeug. pip install -U werkzeug.


Это известная проблема, которая была reported to Werkzeug в ожидании Python 3.6. Пока этот или другой патч не будет объединен и не выпущен, сервер разработчика Werkzeug не будет работать на Python 3.6.

Проверьте ОС может раскошелиться перед импортом ForkingMixIn поскольку Python 3.6 больше не будет определять, что, когда он не доступен на операционной системе (python/[email protected]) и ImportError: cannot import name 'ForkingMixIn' будет происходить.

Между прочим, вы можете запустить приложение с помощью внешнего WSGI-сервера, такого как Gunicorn.

pip install gunicorn 
gunicorn my_app:app 

Вы можете обернуть ваше приложение в debug middleware, если вам нужно в странице отладчика (до тех пор, как вы только запустить Gunicorn с одним работником).