繁体   English   中英

在Python pip冻结中,三等号和ubuntu2是什么?

[英]What are triple equal signs and ubuntu2 in Python pip freeze?

在我的AWS Ubuntu 14.04实例上,我刚刚执行了一个pip freeze > requirements.txt ,它给了我一个文件,其中还包括以下两行:

python-apt===0.9.3.5ubuntu2
python-debian===0.1.21-nmu2ubuntu2

当我然后使用此文件在另一个AWS Ubuntu 14.04实例上执行pip install -r requirements.txt ,我得到以下回溯:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 262, in run
    for req in parse_requirements(filename, finder=finder, options=options, session=session):
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1632, in parse_requirements
    req = InstallRequirement.from_line(line, comes_from, prereleases=getattr(options, "pre", None))
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 173, in from_line
    return cls(req, comes_from, url=url, prereleases=prereleases)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 71, in __init__
    req = pkg_resources.Requirement.parse(req)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2667, in parse
    reqs = list(parse_requirements(s))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2605, in parse_requirements
    line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2573, in scan_list
    raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
ValueError: ('Expected version spec in', 'python-apt===0.9.3.5ubuntu2', 'at', '0.9.3.5ubuntu2')

我想知道这里有两件事:

  1. 为什么pip freeze在版本末尾使用ubuntu2
  2. 为什么pip freeze使用===而不是==

[编辑]

还有一个问题:

  1. 为什么pip在另一台机器上不接受===ubuntu2 (我分别试过)?

===任意等式子句 ,在PEP-0440中定义:

任意等式比较是简单的字符串相等操作,其不考虑任何语义信息,例如零填充或本地版本。 此运算符也不支持前缀匹配,因为==运算符。

任意相等的主要用例是允许指定本PEP无法表示的版本。 此运算符是特殊的,并且充当逃生舱,允许使用实现此PEP的工具的人仍然安装遗留版本,否则该旧版本与此PEP不兼容。

一个例子是=== foobar,它将匹配foobar的一个版本。

此运算符还可用于显式要求未修补的项目版本,例如=== 1.0,这与版本1.0 + downstream1不匹配。

强烈建议不要使用此操作符,并且工具在使用时可能会显示警告。

您应该在目标计算机上升级您的pip版本( pip install --upgrade pip ),它不应该显示错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM