[英]ImportError: cannot import name 'FileWrapper' from 'werkzeug'
[英]ImportError: cannot import name 'run_with_reloader' from 'werkzeug.serving'
當我嘗試運行 Web 應用程序的后端時出現以下錯誤: ImportError: cannot import name 'run_with_reloader' from 'werkzeug.serving'
。 它來自 \lib\site-packages\werkzeug\serving.py 文件。 我認為這與我的服務器文件中的from flask_socketio import SocketIO
行有關。 有任何想法嗎?
此錯誤已得到解決,因此您很可能使用的是舊版本的 Flask-SocketIO。 升級后錯誤應該消失。
我需要繼續使用 flask-socketio v4(對於舊的 socketio.js)並固定到 2.0.x 版本的 Werkzeug 解決了這個問題
--- a/python-flask-socketio-server/requirements.txt
+++ b/python-flask-socketio-server/requirements.txt
@@ -1,4 +1,5 @@
flask
+Werkzeug==2.0.1
flask-socketio==4.3.2
# wheel should not be needed, but avoids pyyaml paho-mqtt bdist_wheel error
wheel
注意:我還需要告訴 pip 不要使用緩存包,否則它仍然會將有問題的 2.1.x 版本引入正在重新生成的 virtualenv。
pip install --no-cache-dir -r requirements.txt
解決方案是安裝以下 Werkzeug 版本 (Werkzeug-0.10.2.dev0dev-20220510) 以及以下版本:[在 MacOS 中測試]
pip3 install Flask-SocketIO==4.3.1
pip3 install python-engineio==3.13.2
pip3 install python-socketio==4.6.0
pip3 install git+https://github.com/untitaker/werkzeug.git@reloader-perf
我不得不降級Werkzeug
和Flask
以避免這個錯誤。 當涉及Flask-SocketIO
時,您可能需要堅持使用舊版本以避免與新版本的Flask
不兼容的問題。
對我有用的組合是:
Flask-SocketIO==4.3.1
python-engineio==3.13.2
python-socketio==4.6.0
Flask==2.0.3
Werkzeug==2.0.3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.