在我的 AWS Ubuntu 14.04 实例上,我刚刚做了一个pip freeze > requirements.txt
这给了我一个文件,其中还包含以下两行:
python-apt===0.9.3.5ubuntu2
python-debian===0.1.21-nmu2ubuntu2
当我然后使用这个文件做一个pip install -r requirements.txt
在另一个 AWS Ubuntu 14.04 实例上,我得到以下回溯:
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')
我在这里想知道两件事:
- 为什么
pip freeze
使用ubuntu2
在版本的最后?
- 为什么
pip freeze
使用===
代替==
?
[EDIT]
还有一个问题:
- 为什么其他机器上的pip不接受
===
和ubuntu2
(我分别尝试了两者)?