从flask_socketio导入SocketIO,emit,出现ModuleNotFoundError: 没有名为'flask_socketio'的模块
我正在尝试在Azure上运行我的app.py文件。这个文件在本地运行得很好,但当我把这个应用部署到Azure,并且把requirements.txt里的所有库都放上去时,它给了我这个错误。
from flask_socketio import SocketIO, emit 2024-03-26T19:36:49.794996719Z: [ERROR] ModuleNotFoundError: No module named 'flask_socketio
虽然flask_socketio已经在requirements.txt里了。我该怎么解决这个问题呢?
我检查了requirements.txt,里面确实有这个包,但它还是报错说找不到。那我该怎么解决呢?
1 个回答
0
我尝试在没有任何问题的情况下部署一个Flask应用程序,并且使用了Flask-SocketIO。
从flask_socketio导入SocketIO和emit 2024-03-26T19:36:49.794996719Z: [错误] 模块未找到错误:没有名为'flask_socketio'的模块
为了避免上面的错误,确保安装了flask_socketio。
你可以使用pip来安装它:
pip install flask-socketio
确保在部署时启用虚拟环境。
python -m venv venv
venv\Scripts\activate
Index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask-SocketIO</title>
</head>
<body>
<h1>Simple Flask-SocketIO Example</h1>
<div id="messages"></div>
<input type="text" id="messageInput" placeholder="Enter message">
<button id="sendMessage">Send Message</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js"></script>
<script>
var socket = io.connect();
socket.connect('http://127.0.0.1:5000/');
socket.on('message', function(data) {
var messages = document.getElementById('messages');
messages.innerHTML += '<p>' + data + '</p>';
});
document.getElementById('sendMessage').addEventListener('click', function() {
var messageInput = document.getElementById('messageInput');
var message = messageInput.value;
socket.emit('message', message);
messageInput.value = '';
});
</script>
</body>
</html>
app.py:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(message):
print('Received message:', message)
socketio.emit('message', message)
if __name__ == '__main__':
socketio.run(app)
requirements.txt:
Flask==3.0.2
Flask-SocketIO==5.3.6
这是本地输出的结果:
关于部署,
在Visual Studio Code的任务栏上选择Azure图标,打开Azure窗口。
以下是步骤:
1. 选择你的Azure订阅。
2. 然后,选择你创建的网页应用。
3. 右键点击网页应用。
- 在这里你会看到“部署到网页应用”的选项。
这是部署后的输出结果: