XIO: fatal IO error 22 (Invalid argument) on X server “localhost:10.0“【小白找bug】

最近在服务器上跑代码时,遇到了这个错误:

python 复制代码
XIO:  fatal IO error 22 (Invalid argument) on X server "localhost:10.0"
      after 383 requests (383 known processed) with 4 events remaining.

它是怎么出现的呢?即使我跑代码时挂了tmux、nohup,试图使得关闭mobaxterm客户端之后让代码在Linux服务器上继续跑。

当关闭客户端,后台运行的代码运行到plt.savefig时出现这个错误;关闭mobaxterm客户端,当后台运行的代码没有运行到plt.savefig时不出现这个错误;不关闭mobaxterm客户端,plt.savefig时不出现这个错误。

原因:

X11:X Window System 版本 11 的简称,是一种用于图形用户界面(GUI)的协议,X Server 是 X11 协议的具体实现。

当使用 MobaXterm 连接到服务器时,DISPLAY 环境变量会被设置为 localhost:10.0,指向 MobaXterm 提供的 X Server。

matplotlib 默认后端(Qt5Agg)需要一个可用的图形环境X11,即使是保存图像也会尝试创建一个图形窗口。当关闭了 MobaXterm 客户端,matplotlib 试图访问 X Server 就会失败,从而导致 XIO: fatal IO error 22。

解决方法:

步骤1、执行 unset DISPLAY删除 DISPLAY 变量 ,程序不会再尝试连接 X11 服务器。

原因:DISPLAY 变量指示当前进程的图形显示服务器,即 X11 服务器的地址。DISPLAY=localhost:10.0就表示 X11 Forwarding 将图形输出到本地客户端(MobaXterm)。

步骤2、强制使用无 GUI 的 Agg 后端(专门用于生成文件,如 PNG、PDF,而不需要图形显示的后端),在代码的最前面加上:

python 复制代码
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

问题解决。

后记:小白之前关闭MobaXterm也不会报这个错误,但是这两天突然出现了这个错误,不知道为什么,😔唉

相关推荐
枫叶林FYL6 分钟前
项目十一:Saga模式分布式旅行预订系统 核心服务实现与Saga编排器
数据库·python·docker
流浪法师解剖鱼8 分钟前
CocosCreator制作推箱子游戏
python·cocos2d
财经资讯数据_灵砚智能14 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月9日
人工智能·python·ai·信息可视化·自然语言处理·ai编程·灵砚智能
金斗潼关16 分钟前
PyTorch+CNN实现衣物分类
pytorch·分类·cnn
仙俊红17 分钟前
深入理解 ThreadLocal —— 从变量引用、强弱引用到 Spring Boot 实战
spring boot·python·算法
Dxy123931021623 分钟前
Python 请求:为什么 Session 比直接请求快 10 倍?
开发语言·python
The_Ticker23 分钟前
港股量化实测:实时行情接口性能与数据质量深度解析
python·websocket·算法·金融
装不满的克莱因瓶3 小时前
链式法则如何传递参数误差 —— 深入理解神经网络中的梯度传播
人工智能·python·深度学习·神经网络·数学·机器学习·ai
Anastasiozzzz3 小时前
从有限状态机到智能体图:传统 FSM 与 Agent Graph的演进
java·人工智能·python·ai
biter down9 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python