使用bandersnatch镜像PYPI时如何仅下载适配Python3.7的软件包
你的问题同时存在过滤器配置项错误和规则匹配目标错误两个问题:
- 你配置的
release_file.python_version字段为PyPI遗留字段,仅用于标记包兼容Python大版本(py2/py3),几乎所有包不会在此字段标记3.7这类小版本号,因此你的匹配规则完全未触发,才会全量下载所有版本包。 - 基于你的需求可按两种场景选择正确配置:
- 仅保留整体支持Python3.7的项目,下载该项目所有版本文件
对应配置:
[filter_projects] keep_project_regex = .*Programming Language :: Python :: 3\.7.*- 保留所有项目,但仅下载单个发布文件中明确适配Python3.7的资源
对应配置:
[regex_release_file_metadata] any:release_file.core_metadata.classifiers = "Programming Language :: Python :: 3\\.7" - 仅保留整体支持Python3.7的项目,下载该项目所有版本文件
注意事项
- 正则表达式中
.为特殊匹配符,匹配3.7时必须转义为3\.,否则会匹配到317、3a7这类不符合要求的内容 - 配置修改完成后,建议先执行
bandersnatch mirror --dry-run验证过滤逻辑,确认过滤结果符合预期后再正式执行同步 - 本地已下载的不符合规则的旧包不会自动清理,正式同步时添加
--delete参数可同步删除冗余文件
内容的提问来源于stack exchange,提问作者Wings
相关产品推荐
相关产品推荐

