Linux Mint环境使用自定义matplotlib样式表遭遇zlib版本不兼容错误及样式文件格式警告求助
我之前也碰到过类似的跨发行版matplotlib兼容问题,给你梳理下针对性的解决思路:
一、关于zlib版本不兼容的PANIC错误
你用conda虚拟环境解决运行问题的思路完全正确。这个错误的本质是系统级zlib库和matplotlib依赖的zlib版本不匹配:Linux Mint自带的zlib是1.3.1版本,而你之前使用的matplotlib打包依赖的是1.2.11版本,两者冲突导致Lua调用崩溃(matplotlib部分组件依赖Lua处理资源文件)。
conda虚拟环境会彻底隔离系统库,使用环境内独立的依赖包,所以创建虚拟环境后脚本能正常运行,这一步的解决方案没问题,可以继续保持用虚拟环境隔离系统依赖。
二、关于样式表的"Missing colon"警告
这个警告看似奇怪,但其实是不同matplotlib版本对样式表语法的容错性差异导致的:你之前的Windows和Ubuntu机器上的matplotlib版本可能偏旧,对不规范的语法容忍度更高;而conda环境里的matplotlib版本更新,对样式表的键值对格式要求更严格。
从警告信息来看,你的madeup.mplstyle第8-12行只单独写了颜色值(比如'#820e21',),但缺少对应的属性名和冒号,不符合matplotlib样式表的属性名: 属性值核心规范。正确的写法需要把颜色列表绑定到具体的属性上,比如最常见的坐标轴颜色循环设置:
打开你的样式表文件,把分散的颜色行替换成完整的属性定义:
# 替换原来第8-12行的单独颜色值 axes.prop_cycle: cycler('color', ['#820e21', '#633e88', '#E89E0B', '#7DA21B', '#091932'])
如果这些颜色是用于其他属性(比如patch.facecolor、text.color等),也要确保每一行都遵循属性名: 属性值的格式,不能单独写颜色值。
修改后保存文件,重新运行脚本,"Missing colon"的警告应该就会消失,样式表的颜色也能正常加载了。
额外提示
你可以用import matplotlib; print(matplotlib.__version__)查看不同环境的matplotlib版本,版本差异是这类跨环境兼容问题的常见根源。如果需要完全匹配之前的工作环境,也可以在conda里指定具体的matplotlib版本安装,比如conda install matplotlib=3.5.3(替换成你之前可用的版本号),也能避免语法兼容性问题。
内容来源于stack exchange

