使用uv pip批量安装多包失败,但单独安装正常的问题求助
问题描述
使用uv批量安装Python包时触发依赖版本兼容错误,但按相同顺序逐个安装无异常。
批量安装命令:
uv pip install --system spatialpandas \ easydev \ colormap \ colorcet \ duckdb \ dask_geopandas \ hydrotools \ sidecar \ dataretrieval \ google-cloud-bigquery
报错详情:
Using Python 3.11.8 environment at: /srv/conda/envs/notebook
Resolved 140 packages in 384ms
× Failed to buildnumba==0.53.1
├─▶ The build backend returned an error
╰─▶ Call tosetuptools.build_meta:__legacy__.build_wheelfailed (exit status: 1)[stderr] Traceback (most recent call last): File "<string>", line 14, in <module> File "/home/jovyan/.cache/uv/builds-v0/.tmpBarfZb/lib/python3.11/site-packages/setuptools/build_meta.py", line 334, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=[]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jovyan/.cache/uv/builds-v0/.tmpBarfZb/lib/python3.11/site-packages/setuptools/build_meta.py", line 304, in _get_build_requires self.run_setup() File "/home/jovyan/.cache/uv/builds-v0/.tmpBarfZb/lib/python3.11/site-packages/setuptools/build_meta.py", line 522, in run_setup super().run_setup(setup_script=setup_script) File "/home/jovyan/.cache/uv/builds-v0/.tmpBarfZb/lib/python3.11/site-packages/setuptools/build_meta.py", line 320, in run_setup exec(code, locals()) File "<string>", line 50, in <module> File "<string>", line 47, in _guard_py_ver RuntimeError: Cannot install on Python version 3.11.8; only versions >=3.6,<3.10 are supported. hint: This usually indicates a problem with the package or the build environment.help:
numba(v0.53.1) was included becausespatialpandas(v0.5.0) depends onnumba
但单独执行uv pip install --system <package>逐个安装所有包时,无任何报错。
原因分析
核心差异在于批量安装与逐个安装时,uv的依赖解析逻辑不同:
- 批量安装时,uv会一次性计算所有待安装包的依赖约束交集,尝试选择满足所有包最低要求的版本。这里
spatialpandas==0.5.0对numba的依赖声明未明确限制高版本,导致解析器选中了不兼容Python 3.11的numba==0.53.1。 - 逐个安装时,解析器仅处理当前单个包的依赖。后续安装的包(如
dask_geopandas)可能依赖更高版本的numba(>=0.57版本开始支持Python 3.11),此时uv会自动升级numba到兼容版本,避开了旧版本的安装错误。
解决方案
1. 前置安装兼容版本的numba
先手动安装支持Python 3.11的numba版本,再执行批量安装:
uv pip install --system numba>=0.57 uv pip install --system spatialpandas easydev colormap colorcet duckdb dask_geopandas hydrotools sidecar dataretrieval google-cloud-bigquery
2. 强制覆盖numba版本约束
使用uv的--override参数强制指定兼容的numba版本,让解析器优先选择该版本:
uv pip install --system spatialpandas easydev colormap colorcet duckdb dask_geopandas hydrotools sidecar dataretrieval google-cloud-bigquery --override numba>=0.57
3. 升级spatialpandas到新版本
spatialpandas 0.6.0及以上版本已更新依赖约束,支持更高版本的numba,直接安装最新版即可:
uv pip install --system spatialpandas>=0.6.0 easydev colormap colorcet duckdb dask_geopandas hydrotools sidecar dataretrieval google-cloud-bigquery
内容的提问来源于stack exchange,提问作者F Baig
相关产品推荐
相关产品推荐

