You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04.4下Spyder4+Python3.6导入wxPython遇ImportError求助

解决Ubuntu 18.04.4下wxPython导入的ImportError问题

这个错误的核心原因是freetype库版本不兼容:FT_Done_MM_Var是freetype 2.8及以上版本才引入的符号,而你的自定义环境(/home/divyang/Softwares/Linux/yes/)里的libharfbuzz.so.0链接了低版本的freetype,导致wxPython找不到这个符号。下面是几个可行的解决方案:

临时快速修复(立即生效)

在导入wx之前,先强制Python加载系统自带的高版本freetype库:

import ctypes
# 加载系统的freetype库,确保全局可见
ctypes.CDLL('/usr/lib/x86_64-linux-gnu/libfreetype.so.6', mode=ctypes.RTLD_GLOBAL)
import wx

把这段代码放在你导入wx的脚本最开头,就能临时绕过依赖冲突问题。

永久解决方案(彻底修复)

步骤1:检查依赖关系

先确认你的自定义环境里的libharfbuzz.so.0依赖的freetype版本:

ldd /home/divyang/Softwares/Linux/yes/lib/libharfbuzz.so.0 | grep freetype

如果输出显示它链接的不是系统的/usr/lib/x86_64-linux-gnu/libfreetype.so.6,而是旧版本或者自定义编译的低版本freetype,就需要修复这个依赖。

步骤2:重新安装wxPython(推荐)

卸载当前有问题的wxPython,然后从源码编译安装,让它链接系统的正确依赖:

# 卸载现有wxPython
pip uninstall -y wxpython
# 从源码编译安装,强制使用系统库
pip install wxpython --no-binary :all:

这个命令会重新构建wxPython,自动使用Ubuntu 18.04自带的freetype 2.8.1(满足版本要求),避免预编译包带来的依赖不匹配问题。

步骤3:调整库加载优先级(如果有自定义编译的库)

如果你在yes环境里自己编译过freetype等库,确保系统库的路径在LD_LIBRARY_PATH的最前面:

# 临时设置,可添加到你的环境启动脚本(比如~/.bashrc或者虚拟环境的activate脚本)
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

这样系统会优先加载系统自带的高版本库,而不是自定义环境里的旧版本。

内容的提问来源于stack exchange,提问作者Divyang Prajapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:17:35