Python pip 發生 TypeError: __call__() takes exactly 2 arguments (1 given) 的解決辦法

在某次 apt-get update 後發現 pip install 出現 TypeError: call() takes exactly 2 arguments (1 given), 所有操作都無法繼續進行

追查了一下錯誤資訊, 發生錯誤的原因是 /Library/Python/2.7/site-packages/packaging/requirements.py 的 59 行

原始程式碼如下

MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")

比對其他版本的 pip 後, 發現這行應該是

MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker")

於是乎就用正確的程式碼替換掉原來的程式碼, 重新運行 pip install 之後就正常了

pip 官方後續也修復了這個 Bug, 可以使用下列指令進行強制更新

python -m pip install --upgrade --force pip