~= 含义
在一些 PIP 文件中我们经常看到兼容版本操作符 ~=。
对于给定的发布标识符 V.N ,他的含义如下:
>= V.N, == V.*
示例
例如,以下版本是等价的:
~= 2.2
>= 2.2, == 2.*
~= 1.4.5
>= 1.4.5, == 1.4.*
~= 2.2.0
>= 2.2.0, == 2.2.*
~= 1.4.5.0
>= 1.4.5.0, == 1.4.5.*
如何验证
# 使用 Python 验证版本约束
from packaging import version, specifiers
spec = specifiers.SpecifierSet("~=5.2")
test_versions = ["5.2.0", "5.2.1", "5.2.7", "5.3.0", "5.5.3"]
for v in test_versions:
print(f"{v}: {version.Version(v) in spec}")
调试技巧
依赖相关的命令
# 查看所有依赖 celery 的包
pip show celery
pipdeptree -r -p celery
# 检查是否有其他约束
pip check
# 查看 pip 如何解析版本
pip debug --verbose
# 检查可用版本
pip index versions celery
使用 pip-tools 分析
pip install pip-tools
# 创建 requirements.in
echo "celery[redis]~=5.2" > requirements.in
# 编译并查看详细过程
pip-compile requirements.in --verbose