在我的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')
我这里有两个问题:
pip freeze
为什么要在版本号后面加上ubuntu2
?pip freeze
为什么要用===
而不是==
?
[编辑]
还有一个问题:
- 为什么另一台机器上的 pip 不接受
===
和ubuntu2
(我尝试了分别使用它们)?