VS Code中Python Flask读取传感器数据时COM17端口权限错误
排查方向和解决办法
给Flask进程添加管理员权限
Windows系统下串口访问需要较高权限,你单独运行串口代码时的终端可能已具备管理员权限,但启动Flask时未获取该权限。右键点击终端/命令提示符,选择「以管理员身份运行」,再执行flask run或python app.py命令尝试。检查串口是否被其他进程占用
虽然单独运行串口代码正常,但整合Flask后可能存在端口未正确释放的情况。打开「设备管理器」→「端口(COM和LPT)」,找到COM17右键选择「属性」→「端口设置」→「高级」,查看是否有其他进程占用该端口。也可使用Process Explorer工具定位占用COM17的进程,结束后重启Flask。关闭Flask调试模式或优化串口初始化逻辑
Flask开启调试模式(debug=True)时会启动两个进程,第一个进程已打开串口,第二个进程尝试再次打开时会触发权限拒绝。可直接关闭调试模式,或在代码中确保串口仅初始化一次:import serial from flask import Flask app = Flask(__name__) ser = None @app.before_first_request def init_serial(): global ser # 替换为你的实际串口参数 ser = serial.Serial('COM17', baudrate=9600, timeout=1) # 你的路由与数据展示逻辑... if __name__ == '__main__': app.run(debug=False)排查虚拟环境权限问题
若使用虚拟环境,可能虚拟环境内的Python进程无串口访问权限。可尝试在系统全局Python环境下运行Flask代码,或找到虚拟环境下的python.exe,右键→「属性」→「兼容性」,勾选「以管理员身份运行此程序」。调整Windows本地组策略权限
运行gpedit.msc打开「本地组策略编辑器」,依次进入「计算机配置」→「Windows设置」→「安全设置」→「本地策略」→「用户权限分配」,找到「串行端口的访问权限」,将你的用户账户添加至列表,重启电脑后再测试。
内容的提问来源于stack exchange,提问作者3B_16_AhmadNur_D4Mekatronika

