python - python包版本与带有本地版本标签的版本
问题描述
我正在使用PEP440中建议的本地版本标签,并且我打包了 2 个版本:turicreate-6.2
和turicreate-6.2+minimal
.
我首先安装 turicreate 6.2+minimal
,
$ pip install target/turicreate-6.2+minimal-cp36-cp36m-macosx_10_12_intel.macosx_10_12_x86_64.macosx_10_13_intel.macosx_10_13_x86_64.macosx_10_14_intel.macosx_10_14_x86_64.whl
然后我尝试安装 6.2,我希望 pip 可以卸载6.2+minimal
,但它说
pip install turicreate==6.2
Requirement already satisfied: turicreate==6.2 in ./env36/lib/python3.6/site-packages (6.2+minimal)
我很困惑。它将版本6.2
和本地版本(重新分发版本)6.2+minimal
视为相同。但为什么?
如果我反转该过程,通过6.2
先安装然后再安装6.2+minimal
,pip 将6.2
首先卸载。似乎 pip 对待这两个版本的方式不同。
$ pip install target/turicreate-6.2+minimal-cp36-cp36m-macosx_10_12_intel.macosx_10_12_x86_64.macosx_10_13_intel.macosx_10_13_x86_64.macosx_10_14_intel.macosx_10_14_x86_64.whl
Processing ./target/turicreate-6.2+minimal-cp36-cp36m-macosx_10_12_intel.macosx_10_12_x86_64.macosx_10_13_intel.macosx_10_13_x86_64.macosx_10_14_intel.macosx_10_14_x86_64.whl
...
Requirement already satisfied: chardet<4,>=3.0.2 in ./env36/lib/python3.6/site-packages (from requests>=2.9.1->turicreate==6.2+minimal) (3.0.4)
Installing collected packages: turicreate
Attempting uninstall: turicreate
Found existing installation: turicreate 6.2
Uninstalling turicreate-6.2:
Successfully uninstalled turicreate-6.2
Successfully installed turicreate-6.2+minimal
解决方案
PEP 0440声明如下:
Except where specifically noted below, local version identifiers MUST NOT be permitted in version specifiers, and local version labels MUST be ignored entirely when checking if candidate versions match a given version specifier.
在您的情况下,这意味着您要 install 6.2
, pip 发现 existing 6.2+minimal
,本地部分+minimal
被忽略,因为它应该是这样的,所以 pip 很高兴它不需要做任何事情。你不快乐,因为那不是你想要的,虽然......
反过来说,我的猜测是你指定了一个特定的(本地)版本,它6.2
不匹配,所以 pip 做到了。
推荐阅读
- java - 相同的输入,相同的输出,但不同的结果(CodeForces)
- flutter - 前导图标的颤振标题置换
- google-bigquery - BigQuery 上的模糊匹配电子邮件
- c# - 如何检查 POS 打印机状态
- javascript - 水平拆分窗格 vue 组件未在电子中调整大小
- vue.js - 我的图像标签内的 vue 插值作为 src:" {{ image }}"
- javascript - 如何使用 lodash 在 SQL IN 子句等条件下过滤数组?
- git - 没有“比较和拉取请求”按钮/来自错误用户的推送
- python - 如何在 for 循环(if else 语句)中打印数据间隔?Python 问题
- django - 浮点字段上的 Django 注释无法正常工作