これまでちょっとしたスクリプトが必要なときはRubyで書いていたけれど、なんとなくPythonでも書けるようになってみたいな〜と漠然と思い、本を買って読んでみた。画像を生成したり、OSのGUIもスクリプトで操作できるんだ〜。おもしろそう、ということで、まずはmacOSでPythonを実行する環境を整えてみることにしました。
Rubyはanyenvでrbenvをインストールしたうえでバージョンを管理していたので、Pythonも同様になんちゃらenvがあるのかなあと思って調べたら、venv、virtualenv、pipenv、pyenv… などがあり、ちょっと複雑。venvはPython 3.3から標準で提供されているPythonの仮想環境を作成するためのモジュール、virtualenvはvenvが標準で提供される前から存在していたツールでPython 3.3以前でも利用できる、pipenvは仮想環境管理とパッケージ管理を統合したツールでPipfileやPipfile.lockを用いて依存関係を管理できる、pyenvはPythonのバージョンを管理するためのツール、という理解をしました。
しばらく調べた結果、2023年7月現在はanyenvを使ってpyenvをインストールし、pyenvでインストールしたPythonを使ってvenvで仮想環境を作成するのが良い…?という結論になった。とはいえ、ちょっとPythonで遊んでみたいな、くらいの目的としては複数のバージョンをがっつり切り替える必要もなく、まあ動けばいいかということでvenvは必要になったら導入しようかな。
ここではanyenvでPythonをインストールした手順を残しておきます。なお、手元のmacOSのバージョンは13.4.1で、シェルはZshを使ってます。anyenvのインストールは割愛…
$ anyenv update $ anyenv install --list $ exec $SHELL -l $ anyenv install pyenv $ pyenv install --list $ pyenv install 3.11.4 #記事公開時の最新バージョンです $ pyenv global 3.11.4 $ pyenv versions
これでPythonの3.11.4をインストールできました🎉
Pythonにはpipというパッケージ管理ツールがあるものの、依存関係を管理しやすくなったpoetryというツールがあるようで、あわせてインストールしておきます。RubyでいうところのBundler、JavaScriptでいうところのnpmのようなもので、GemfileやGemfile.lock、package.jsonやpackage-lock.jsonにあたるのがpyproject.tomlとpoetry.lockとのこと(理解が間違っていたらすみません…)。
$ curl -sSL https://install.python-poetry.org | python3 - # .zshrc に `export PATH=$HOME/.local/bin:$PATH` を追記 $ exec $SHELL -l $ poetry --version $ poetry self update $ poetry config virtualenvs.in-project true $ poetry config --list
Pythonを実行するときは、RubyでBundlerを使うときのbundle execよろしく poetry run
をつける。
$ poetry init -n $ poetry run python main.py
そんな感じで〜す!