为何依赖解析器会选用avro-python3 1.9.2.1这类本应被禁止的版本?
依赖版本排除问题解答
为什么!=1.9.2没拦截1.9.2.1?
Python依赖版本规范里,!=是精确匹配排除,只会过滤版本号完全等于1.9.2的包。1.9.2.1是独立的子版本号,和1.9.2不属于同一个精确版本,所以不在排除范围内。
如何拦截所有1.9.2前缀的版本?
把原配置里的!=1.9.2替换成!=1.9.2.*即可。通配符*会匹配所有以1.9.2开头的子版本,这样就能排除1.9.2.1、1.9.2.2等所有同前缀版本,同时保留原有的>=1.8.1和<1.10.0限制,不需要额外添加其他规则。
修改后的配置示例:
- requirements.txt:
avro-python3>=1.8.1,!=1.9.2.*,<1.10.0; python_version >= "3.0" - pyproject.toml:
avro-python3 = ">=1.8.1,!=1.9.2.*,<1.10.0"
这样PDM解析时就会跳过所有1.9.2.x版本,从符合范围的其他版本(比如1.9.1、1.9.3)中选择。
内容的提问来源于stack exchange,提问作者Mike Williamson
相关产品推荐
相关产品推荐

