导入wxPython触发段错误,求Ubuntu 18.04.3 LTS下Python3.6调试工具
调试Python3.6中wxPython导入失败的实用工具与方法
碰到Ubuntu 18.04.3 LTS下Python3.6导入wxPython失败、但Python2.7正常的问题,别着急,我给你梳理几个能帮你定位问题的工具和思路:
1. 先确认基础安装状态
- 用
pip3检查包是否安装:在终端跑pip3 show wxPython,看看输出里有没有版本信息和安装路径。要是显示“WARNING: Package(s) not found: wxPython”,那就是Python3环境根本没装这个包,得用pip3 install wxPython重新安装(安装前记得先装系统依赖,比如sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev,不然可能编译失败)。 - 查看Python3的包路径:运行
python3 -m site,输出里的site-packages路径就是Python3找包的地方,对比pip3 show wxPython里的安装路径,确认wxPython的文件是不是在正确的位置。
2. 直接追踪导入错误细节
- 极简测试命令:终端执行
python3 -c "import wx; print(wx.__version__)",这个命令会直接抛出导入时的完整错误信息——是依赖库缺失、版本不兼容还是模块路径冲突,错误栈里一般会说得明明白白。 - 用
traceback输出完整回溯:写个小脚本跑一下,能拿到更细致的错误链:
运行后会显示错误发生在哪个文件、哪一行,帮你精准定位问题点。import traceback try: import wx except Exception as e: traceback.print_exc()
3. 检查系统依赖是否缺失
wxPython依赖很多系统级库,尤其是GTK相关组件,Ubuntu 18.04里很容易因为依赖没装全导致导入失败:
ldd命令查动态依赖:先找到wxPython的核心模块文件(比如从pip3 show wxPython的Location路径进去,找wx/_core.cpython-36m-x86_64-linux-gnu.so),然后运行ldd 你的路径/_core.so,看看输出里有没有not found的项——这些就是缺失的系统库。apt-file找对应安装包:如果不知道缺失的库属于哪个系统包,用apt-file search 缺失的库名就能查到,比如apt-file search libgtk-3.so,然后用sudo apt-get install安装对应的包就行。
4. 用虚拟环境隔离环境冲突
有时候系统里的Python环境因为装了太多包导致冲突,试试用venv建一个干净的虚拟环境测试:
# 创建虚拟环境 python3 -m venv wx_test_env # 激活环境 source wx_test_env/bin/activate # 安装wxPython pip install wxPython # 测试导入 python -c "import wx"
如果在这个干净环境里能成功导入,那说明原来的系统环境有包冲突或者路径配置问题,就可以针对性地清理原环境了。
内容的提问来源于stack exchange,提问作者Psionman
相关产品推荐
相关产品推荐

