Flask 3.6を使用して基本的なPythonアプリを実行しようとしています。ただし、ImportError: cannot import name 'ForkingMixIn'
を取得します。 Python 2.7または3.5で実行すると、このエラーは発生しません。 Flask 3.6でPythonを実行するにはどうすればよいですか?
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'
これは、Werkzeug 0.11.15で修正されています。 Werkzeugの最新バージョンがインストールされていることを確認してください。 pip install -U werkzeug
。
これは既知の問題でした Werkzeugに報告 Python 3.6を見越して。そのパッチまたは別のパッチがマージされてリリースされるまで、Werkzeugの開発サーバーは= Python 3.6。
OSが
ForkingMixIn
をインポートする前にforkできるかどうかを確認します。なぜなら、Python 3.6はオペレーティングシステムで利用できない場合、それを定義しないためです( python/cpython @ aadff9b )およびImportError: cannot import name 'ForkingMixIn'
が発生します。
それまでの間、Gunicornなどの外部WSGIサーバーでアプリを実行できます。
pip install gunicorn
gunicorn my_app:app
ページ内デバッガーが必要な場合は、1つのワーカーでのみGunicornを実行する限り、アプリを debug middleware でラップできます。