DEBUG.WIKI
京东云;让 AI 进入真实业务;零售 · 物流 · 客服 · 硬件;查看方案 →
阿里云;从建站到云上业务;云服务器 · 数据库 · 对象存储;查看产品 →
雨云;给项目一台云服务器

Python 3.11 装不上 IPython 9.12:核对 Requires-Python

IPython 9.11 和 9.12 的发行元数据要求 Python 3.12,Python 3.11 会被 pip 排除。说明 9.13.0 恢复支持与受控版本选择。

在 Python 3.11 的新虚拟环境里安装 ipython==9.12,pip 列出一长串历史版本,却把 9.11.0、9.12.0 标成 Requires-Python >=3.12,最后报 No matching distribution found。这时包确实存在,失败原因是指定版本的解释器要求不匹配。

正式发行元数据中,IPython 9.12.0 要求 Python 3.12 或更新;9.13.0 已恢复 >=3.11。修正后的代码进入后续发行版,不会改变已经上传的 9.12.0 的兼容性声明。不能因为看到了支持恢复,就继续要求 pip 在 Python 3.11 上接受旧发行包。

先核对安装器属于哪个解释器

在项目实际使用的虚拟环境中核对解释器路径、Python 版本及依赖锁定。IDE 的终端、Notebook 服务进程和内核可能使用不同环境;系统有 Python 3.12,不表示当前 pip 就属于它。

需要在终端检查时,可使用当前解释器调用 pip,避免裸 pip 指向另一个环境:

python --version
python -m pip --version

这两条只查看版本与安装位置,不改变依赖。若项目由环境管理器驱动,应查看它最终启动的解释器,而不是用系统命令的结果代替任务环境。

按项目约束选可安装的正式发行版

继续使用 Python 3.11 的项目,可以选择兼容它的正式 IPython 版本。9.13.0 与 9.10.1 的发行元数据都接受 Python 3.11;具体选哪一个还应结合项目其他依赖与锁文件,解释器条件满足后,其他依赖约束仍须同时满足。

如果业务必须固定 9.12.0,则需要在符合其要求的 Python 3.12 或更新解释器中重建对应环境,并复查应用依赖。更换解释器是整个环境变化,不应在现有虚拟环境里只替换一个可执行文件。

不要使用 --ignore-requires-python 强装,也不要改本地元数据伪装成兼容。安装器通过不等于运行时支持,跳过限制会把清晰的版本选择问题变成较难诊断的导入或语法故障。清缓存和反复换镜像也不会解除一个正确读取到的 Python 版本限制。

让锁文件与真正运行环境一致

调整版本约束后,按项目原来的包管理流程更新锁文件和环境。验收要确认实际运行进程的 Python 与 IPython 版本符合约束,再检查终端交互或 Notebook 内核是否正常;只确认安装退出码不覆盖后续使用。

保留原锁文件便于恢复。镜像环境若仍携带旧约束或旧解释器,应重建对应环境;开发机的安装成功不会自动改变文档构建、CI 或远程内核。