pip assert_source_matches_version(self)版本验证报错Source in %s has version %s, which satisfies requirement %s的解决方式

时间:2023-12-23 12:13:26

  在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)))