从flask_socketio导入SocketIO,emit,出现ModuleNotFoundError: 没有名为'flask_socketio'的模块

0 投票
1 回答
33 浏览
提问于 2025-04-12 14:32

我正在尝试在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. 右键点击网页应用。

  1. 在这里你会看到“部署到网页应用”的选项。

在这里输入图片描述

在这里输入图片描述

这是部署后的输出结果:

在这里输入图片描述

撰写回答