pip更新时出错

error during pip update

我在Win10下的cygwin环境下使用pip

$ pip --version
pip 9.0.1 from c:\python36\lib\site-packages (python 3.6)

我编写了一个 bash 函数 molt 来进行 python 包维护

molt () {
  local i
  for i in $(pip list | cut -d' ' -f1)
  do
    case $i in
      pip|pywin32)
        continue
      ;;
      *)
        pip install -qU $i
      ;;
    esac
  done
}

它一直有效到上周。

$ molt
Command "python setup.py egg_info" failed with error code 1 in C:\cygwin64\tmp\pip-build-lbe5xcu8\Package\

Usage:
pip install [options] <requirement specifier> [package-index-options] ...
pip install [options] -r <requirements file> [package-index-options] ...
pip install [options] [-e] <vcs project url> ...
pip install [options] [-e] <local project path> ...
pip install [options] <archive url/path> ...

no such option: --------------

我怀疑 pip 一定发生了变化,但无法弄清楚是什么变化破坏了代码。请帮忙。

原来是pip listreturns

Package        Version
-------------- -------
pip            9.0.1
setuptools     38.5.2

根据molt函数导致pip install -qU Package --------------,导致错误。罪魁祸首是新的 pip list 输出格式(我忘记了我刚才将默认的 legacy 更改为 columns )。恢复默认格式选项可修复错误,即

pip list --format=legacy