Ubuntu 22.04安装PyQt4时依赖问题求助
嗨,我太懂你这种明明装了Python2却还是被依赖问题卡壳的烦躁了!咱们一步步来拆解问题,搞定它。
为什么明明装了Python2.7,apt还是说依赖不满足?
Ubuntu 22.04(Jammy Jellyfish)的官方软件源已经彻底移除了Python2相关的软件包,你通过sudo apt install python装的其实是Python3,之后手动做的软链接只是让命令行的python指向Python2,但apt的依赖检查是看系统中已注册的软件包状态,不是看软链接的——所以apt根本识别不到你“实际存在”的Python2,自然会报错说python包不可安装。
另外,sip-api-12.2是Python2版本的sip库提供的依赖标识,这个库在22.04的源里也没有,得从旧版本的Ubuntu源里找。
解决步骤
1. 添加Ubuntu 20.04(Focal)的软件源
PyQt4的包你是从Focal源下载的,我们直接把Focal的universe源添加到系统,同时设置优先级避免影响系统其他软件:
创建Focal源文件:
sudo nano /etc/apt/sources.list.d/focal-universe.list在文件里写入:
deb http://archive.ubuntu.com/ubuntu focal universe保存退出(Ctrl+O,回车,Ctrl+X)。
设置源优先级(防止Focal源覆盖系统默认的Jammy包):
sudo nano /etc/apt/preferences.d/focal-pin写入以下内容:
Package: * Pin: release n=focal Pin-Priority: 50保存退出。
2. 安装Python2.7的官方包和依赖
现在更新apt缓存,然后安装Python2.7和需要的sip库:
sudo apt update sudo apt install python2.7 python2.7-dev python-sip
这里python-sip包就是提供sip-api-12.2依赖的关键。
3. 设置Python2为可选默认版本
如果需要让命令行的python指向Python2,可以用update-alternatives来管理:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
之后可以通过update-alternatives --config python切换Python版本。
4. 安装PyQt4
现在可以直接从Focal源安装PyQt4,比手动下载deb包更稳妥:
sudo apt install python-qt4 python-pyaudio
注意事项
- Ubuntu 20.04的源已经停止安全更新了,添加这些源会带来一定的安全风险,建议只在专门的环境里运行需要Python2和PyQt4的软件,用完可以考虑移除Focal源。
- Python2已经完全停止官方支持了,如果有可能,尽量联系软件开发者升级到支持Python3和PyQt5/6的版本,这才是长期的解决方案。
备注:内容来源于stack exchange,提问作者zhang

