Подтвердить что ты не робот

Запуск сервера флагов в Python 3.6 вызывает импорт ImportError для SocketServer и ForkingMixIn

Я пытаюсь запустить базовое приложение Flask с помощью Python 3.6. Однако я получаю ImportError: cannot import name 'ForkingMixIn'. Я не получаю эту ошибку при работе с Python 2.7 или 3.5. Как запустить Flask с 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'
4b9b3361

Ответ 1

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


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

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

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

pip install gunicorn
gunicorn my_app:app

Вы можете обернуть свое приложение в отладочное промежуточное программное обеспечение, если вам нужен встроенный отладчик (пока вы используете только Gunicorn с одним рабочим).