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

Python3.9下pip download下载同包多版本报错的解决方法咨询

问题

想要用pip把需求文件里列出的所有包下载到指定目录,同时下载每个包的最新版本和特定版本(比如contexter的最新版和0.1.4版)。用命令python3 -m pip download -r $FILE_TO_READ --dest $PACKAGES_DIR在Python3.6中能正常运行,但在Python3.7及以上版本(当前用3.9)报错:

ERROR: Double requirement given: contexter==0.1.4 (from -r /home/lab/working_environment/packages_to_update.txt (line 15)) (already in contexter (from -r /home/lab/working_environment/packages_to_update.txt (line 14)), name='contexter')

需求文件内容示例:

astpretty
bleach
blivet
bottle
build
certifi
cffi
chardet
charset-normalizer
colorama
commentjson
conan
configobj
contexter
contexter==0.1.4
cryptography
dasbus
dbus-python
decorator

要求无需拆分或修改需求文件解决报错。

解决方案

Python3.7+对应的pip版本(一般为19.0+)默认启用了更严格的依赖冲突检查,不允许同一个包在需求文件中出现多次不同版本的需求。可以通过逐行处理需求文件的方式规避这个检查,具体命令如下:

cat $FILE_TO_READ | xargs -n1 python3 -m pip download --dest $PACKAGES_DIR

原理说明

  • cat $FILE_TO_READ 读取需求文件的全部内容
  • xargs -n1 将每行内容作为单独参数传递给后续的pip命令
  • 每次pip仅处理一个包的需求,不会检测到同一个包的重复需求,从而成功下载最新版和指定版本的包

如果需要仅下载目标包本身、忽略依赖包的下载,可添加--no-deps参数:

cat $FILE_TO_READ | xargs -n1 python3 -m pip download --no-deps --dest $PACKAGES_DIR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:21