在Python 3.6中运行Flask dev服务器会引发SocketServer和ForkingMixIn的ImportError

时间:2016-08-29 20:11:22

标签: python flask werkzeug python-3.6

我正在尝试使用Python 3.6运行基本的Flask应用程序。但是,我得到ImportError: cannot import name 'ForkingMixIn'。使用Python 2.7或3.5运行时,我不会收到此错误。如何使用Python 3.6运行Flask?

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'

1 个答案:

答案 0 :(得分:37)

自Werkzeug 0.11.15起修复。确保您已安装最新版本的Werkzeug。 <div uib-popover-html="'<img src="*image_location*" />'"> <div uib-popover-html="'<img src='*image_location*' />'"> <div uib-popover-html="'<img src=`*image_location*` />'">

这是一个已知问题reported to Werkzeug,预计Python 3.6。在合并和发布该补丁或其他补丁之前,Werkzeug的开发服务器将无法在Python 3.6上运行。

  

检查操作系统是否可以在导入<div uib-popover-html="'<*inline html elements go here*>'"> 之前进行分叉,因为当Python 3.6在操作系统(python/cpython@aadff9b)上不可用时将不再定义,并且pip install -U werkzeug将会发生。

与此同时,您可以使用外部WSGI服务器(如Gunicorn)运行您的应用程序。

ForkingMixIn

如果您需要页内调试器,您可以将应用程序包装在debug middleware中(只要您只使用一名工作人员运行Gunicorn)。