Python 3 になって何年も経つのになんでこんなものを拝まなきゃならないのか。最近遭遇したものでは 2 つあります。
- PermissionError などで操作が失敗し、エラーメッセージのデコードで失敗する。適切な状態で実行すれば成功する。
- distutils.dist.Distribution.parse_config_files で失敗する。パッケージに含まれるファイル (setup.cfg など) を修正すれば成功する。
ライブラリを作っていると分かりますが、インストールとアンインストールのテストは投げやりになりがちです。開発環境の依存性の状態やロケールもまちまちなのであらゆるライブラリに一定の品質を求めるのも難しいと思います。
pip/distutils が呼び出されたときだけ sitecustomize.py でモンキーパッチを当てられないか考えましたが、__main__ はダミーだし、sys.argv はないし、軽く Python のソースを追う限りではいまいち良く分からないしで諦めました。import hook すればなんとかなるでしょうがバッドノウハウもいいところです。
多分きちんと調べてパッチ書いた方がいいんだろうな…