python3.9でmitmproxyがtyping関係で壊れたのでpython3.8に切り替えて使う

2020/10/18 21:32:082020/10/18 21:59:44

うちの環境だけかもしれないけど、かなり終わった状況だったのでメモ。前提として macOS Catalina。
なんとなく依存更新をしたくなり、$ yarn upgradeしたところ諸々が上がり始めて、pythonも無事3.9に上がったようで、インストールしていたパッケージが全部消えてしまった。
とりあえずmitmproxyが必要だったので$ pip3 install mitmproxyするも、いざ起動するとTypeError: Subscripted generics cannot be used with class and instance checksで起動しないという事態に。

現状入ってるPythonを確認。$ brew list | grep python
4つ入っている…!?
実際このうちのpython, python3,python@3.8は全て同一。python@3.9だけkeg-onlyで入っているものの、なぜかpipとbinには3.9が使われるようになってしまった。python3コマンド自体は3.8につながっているので、ここから起動を試みるもののModuleNotFoundError: No module named 'mitmproxy'。なぜ…?

pip show mitmproxyで場所を確認してみる。
locationが3.9の部分に入ってしまっている。pipからインストールすると現状ここに入るっぽいので、site-packagesの引数以外の変更方法を調べると二つの方法があったが、両方よくわからなかった。
  • ~/.pip/pip.confはsite-packagesを設定する変数名がわからない
  • $PYTHONPATHは全然効かない

埒が明かないので、pipを直接触ることに。
$ vim /usr/local/bin/pip3で開くと最初の行に3.9の文字が2箇所見えるので、これを3.8に書き換える。
$ pip3 install mitmproxyをすると3.8のsite-packagesに入る。
$ mitmproxy
起動した。おわり


著者の画像

ci7lus

@ci7lus

Caramelize - Made withCaramelizeand / Privacy