PythonをRustのcargoのように宣言された実行環境管理、バージョン管理で実行しようとして相当に苦しんだのでやったことをまとめる。
そもそもPythonは大変だしすべてが面倒くさいので、使いたくないんじゃ!という人間が書いてます。Rust使いたい。
【目標】
できるだけ簡単でトラブルを起こさないPythonの開発環境をゲットする。理想はcargo
【要件】
・ローカル(windows)
・仮想環境必須。混ざるし何入れたか忘れるので生のインストールには手をつけない
・pip installしたパッケージとそのバージョンを一覧したい
・CUDAを使いたい
【結論】
PyCharm使え
最終的にこれに落ち着いた
- PyCharm使用
- PyCharmがよしなにしてくれる仮想環境を使う
- パッケージ管理はpip install(後述)
PyCharmの良さ
①何もしてないのにパッケージのバージョンが見れるではないか!
仮想環境で適当にpip installする。すると、入ったやつが一覧表示される。ドキュメントによる宣言管理ではないが、プロジェクトごとに仮想環境を作るならこれで十分ではないだろうか。
③ターミナルは開くと自動で仮想環境に入ってくれる。めっちゃ便利
(virtual env) PS C:\Users\{user}\PycharmProjects\pythonProject>
④VSCodeで起こる、実行のインタープリターと、コードアシストのインタープリターが別にならないので「波線エラーでるけど実は実行すれば動く」というくそみたいなことがない、そしてそれを解決するためにググらなくていい
ほかのツールに対する愚痴
・google colab
遅い、エディタが。セルの実行のショートカットが変。
個人的には自分のGPUで動かしたいというのがあるので却下。
・VSCode
我らがVSCodeだが、pythonに限ってはインタープリターの選択まわりがトラブルの元。
・Anaconda
ごちゃごちゃしている。重い、煩雑。やだ
(仮想環境枠だが、統計学者ではなくエンジニアとしてはこれの存在意義がわからない、仮想環境の機能としても普通のvenvと何が違うのかよくわからないのでお気持ちで却下。Jupyterとかにはいいんだろうけど、セルスタイルが好きではないし、コード補完がもっさりしすぎで無理だった)
・Docker(WSL)
コンテナ作成が煩雑すぎる、DockerDesktopが不安定(よく起動しなくなったりする)
CUDAを使うのが簡単になったらしいが、動かなくて、対処が面倒そうだったので却下
・poetry
機能はすばらしい。だが、インストールしてパスを通してもなぜかエディタのターミナルでは認識されない。調べまくったのに不明なまま。時間返せ
機能はすばらしい。
・pyflow
Rust製なだけあってcargoを意識していて、pythonのバージョン指定、パッケージ管理、全部理想的。なんとpythonのインタープリターまで内臓していて、別途必要ない。
完璧だ!
と思ったのだが、ライブラリを依存に組み込むと動かない。おお~い。まあ年次の浅い小さいプロジェクトだし、今後に期待
(ライブラリをインポートしなければ現状でも十分だが、それならRustでよくねってなる)
・reqwirement.txt
うーん、そういうんじゃないんだよな。cargoみたいなのが欲しい
・venv
Pythonに元からあるやつ。わりと簡潔なので使うならこれだがパッケージの宣言的管理はできないのとVSCodeだと起動がちょっと面倒
・PyCharm
Python専用の統合開発環境。VSCodeで苦しんだのでIDEに希望を託してみた。これが正解だった