python3.9でmitmproxyがtyping関係で壊れたのでpython3.8に切り替えて使う
うちの環境だけかもしれないけど、かなり終わった状況だったのでメモ。前提として macOS Catalina。
なんとなく依存更新をしたくなり、$ yarn upgradeしたところ諸々が上がり始めて、pythonも無事3.9に上がったようで、インストールしていたパッケージが全部消えてしまった。
とりあえずmitmproxyが必要だったので$ pip3 install mitmproxyするも、いざ起動するとTypeError: Subscripted generics cannot be used with class and instance checksで起動しないという事態に。
https://gyazo.com/39d4a721289ada8b8d2a2f3a6e6e0858
現状入ってるPythonを確認。$ brew list | grep python
https://gyazo.com/5ceb62567990c338d22a3d77bbf204ba
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で場所を確認してみる。
https://gyazo.com/7e38ed1b7a0031d0988ebb7fd5bb3b7d
locationが3.9の部分に入ってしまっている。pipからインストールすると現状ここに入るっぽいので、site-packagesの引数以外の変更方法を調べると二つの方法があったが、両方よくわからなかった。
~/.pip/pip.confはsite-packagesを設定する変数名がわからない
$PYTHONPATHは全然効かない
埒が明かないので、pipを直接触ることに。
$ vim /usr/local/bin/pip3で開くと最初の行に3.9の文字が2箇所見えるので、これを3.8に書き換える。
https://gyazo.com/0f0ac8085d8cedc5f7cc26605930d262
$ pip3 install mitmproxyをすると3.8のsite-packagesに入る。
$ mitmproxy
https://gyazo.com/3f34a19134134673296eaf7d66e7514e
起動した。おわり