suima8のメモ

メモです

memo

pip + sys.stderr.write(f“ERROR: {exc}”)

やんごとなき事情で、古臭いPythonを使っていたら pip が使えなくなってしまった。 python 3.5、2.x を使っていたのだが、どちらも sys.stderr.write(f“ERROR: {exc}”) とエラーが出てしまう。 どうやら 3.6以下は 今後pipのサポートから外れるとのこと。

最新バージョンを追えれば問題ないのですが、 仕方ないこともある。 このエラーが出ると python -m pip hoge が使えなくなるので、pip を使ってpip のバージョンを管理できなくなってしまう。

get-pip.py で特定のバージョンをインストール

https://bootstrap.pypa.io/pip

にアクセスして,お目当ての pip を探そう. 適当なバージョンの get-pip.py を読めば,どのバージョンがダウンロードできるかわかる.

python 2.x の場合

pip (version 20.3.4) をインスコ

virtualenv --python=python2 .venv/
cd .venv
source bin/activate
curl https://bootstrap.pypa.io/2.7/get-pip.py --output get-pip.py 
python get-pip.py 
pip install hoge

python 3.x の場合

pip (version 7.1.2). をインスコ

virtualenv --python=python3 .venv/
cd .venv
source bin/activate
curl https://bootstrap.pypa.io/3.2/get-pip.py --output get-pip.py 
python get-pip.py 
pip install hoge

余談

get-pip.py を読めばわかるが,DATA = b""" ... の箇所はzipで固めたpipがそのまま張り付けられてる. 安定動作している自環境のpipをzip圧縮し, hexdump でダンプすれば,似たようなことが合出来る.