pip assert_source_matches_version(self)版本验证报错Source in %s has version %s, which satisfies requirement %s的解决方式
在win8.1下为了安装flask模块,开始安装pip,结果发生了上篇博客里面的错误ntpath join(path, *paths) 发生UnicodeDecodeError。解决之后继续发现版本验证总是错误。
这就很奇怪了,因为我只安装了py 2.7.8版本,而flask的文档上2.4以上都是支持的,我到了pip的目录下找到报错的函数C:\Python27\Lib\site-packages\pip-1.5.6-py2.7.egg\pip\req.py def assert_source_matches_version(self):这个函数。
我将其中的代码改为下面,因为原来的代码中version在这个地方为1.0.0,这个版本号肯定是获取出错了,应该是某个地方权限还是什么原因没有抓到,我直接将版本号赋值,后面运行就没有出错。
解决方案就是将assert_source_matches_version代码改为以下,version写死为自己的python的版本号,不过具体的bug没有找到,有时间分析。
def assert_source_matches_version(self):
assert self.source_dir
version = '2.7.3'
if version not in self.req:
logger.warn('Requested %s, but installing version %s' % (self, self.installed_version))
else:
logger.debug('Source in %s has version %s, which satisfies requirement %s'% (display_path(str(self.source_dir)), version, str(self)))