asdf+Poetry+PyCharmでPython開発環境構築
概要
掲題の組み合わせでPythonの開発環境を構築してみた時のメモです。
これでがっつり開発をやってみたわけではなく、とりあえずそれっぽくなったぜ!というだけで、ベストプラクティスとかではありません。
環境
- macOS Monterey(Apple M1)
- zsh
内容
asdfについて
asdfについて
asdfとはいわばpyenvの多言語対応版といったところです。pyenvは様々なバージョンのPython処理系をインストールしたり切り替えたりできるツールですが、pyenvがPython専用なのに対してasdfは複数の言語に対応している点が異なります。
ふざけた名前のくせに非常に便利ですね。
まあpyenvでもいいのですが、asdfに慣れておけば応用がききそうなので今回はそちらにしました。
asdfのインストール
いくつか方法があるようですが、Homebrewを使うのが無難でしょう。
brew install asdf
それから.zshrcに必要な記述を追記します。
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
これでasdfが使えるようになりますが、asdfでPythonをインストールするにはasdfのプラグインを追加する必要があります。
asdf plugin add python
これでOKです。
asdfでPythonをインストール
まずはインストール可能なPython処理系の一覧を表示します。
asdf list-all python
長いので記載しませんが、これでインストール可能な一覧がずらずらと縦に表示されます。
今回は3.10.3をインストールしてみます。
asdf install python 3.10.3
これでインストールされますが、この時点ではシステムのPythonを指したままになっていて使えません。
手っ取り早く使えるようにするにはglobalサブコマンドを使用します。
asdf global python 3.10.3
これでpython
およびpython3
コマンドが上記でインストールしたPythonを指します。
元に戻すには以下を実行します。
asdf global python system
あとよく使いそうなのは以下のような感じでしょうか。
インストール済みのバージョン一覧を表示
asdf list python
現在参照しているバージョンを表示
asdf current python
アンインストール
asdf uninstall python 3.10.3
複数言語対応の代償として、いちいちpythonって打たないといけないのが若干面倒ですね。
Poetryについて
asdfでインストールしたPythonに直接pipでライブラリをインストールすることもできますが、おそらくやめておいたほうがいいでしょう。
それはあくまで「コピー元」として、プロジェクトごとに仮想環境を作ってそこにインストールしていくほうが安全です。
仮想環境を作るためのツールはいくつかありますが、ここでは比較的新しいPoetryを試してみます。
Poetryは仮想環境を作る機能のほか、pipのようにライブラリをインストールする機能も持っています。
Poetryのインストール
PoetryのインストールにはPythonを使用します。また、(たぶん?)インストール時に使用したPythonに依存するようなので、Poetryインストール時に参照していたPython処理系は消さないほうがいいです。システムのPythonを使ってインストールするといいのかもしれません。
以下のコマンドを実行してインストールします。
curl -sSL https://install.python-poetry.org | python3 -
それから$HOME/.local/bin
をパスに追加します。
うまくいっていればpoetry
コマンドが使えるようになります。
poetry --version
PyCharmからPoetryを使用する
Poetryはコマンドラインツールですが、仮想環境を作る部分についてはGUI操作でPyCharmから実行できます。
スクショ貼るのが面倒なので以下を参照してください。(詩ってなんやねんというのはさておき)
https://pleiades.io/help/pycharm/poetry.html
Base interpreterにはasdfでインストールしたものを指定するといいでしょう。
インストール済みの一覧は/Users/ユーザ名/.asdf/installs/python
にあります。
(これを直接参照するのが正しいのか怪しい気もしますが、まあ仕方ないでしょう。たぶん)
うまく仮想環境を作れればPyCharm上からはその環境を参照するので、直接poetry
コマンドであれこれするよりも少し便利になります。
PyCharm上から起動したターミナルもその環境を参照するので、poetry
コマンドを使う操作も安心して実行できます。
Poetryの良さそうな点
これで開発をやってみたわけじゃないのであれですが、Poetryは依存ライブラリの追加時に必ず設定ファイル(pyproject.toml)にライブラリ名のそのバージョンが記録されるのが良いなと思いました。
仮想環境を作ってプロジェクトローカルにライブラリをインストールするという目的ならvenvとpipの組み合わせでも可能ですが、pipを使った場合は明示的に出力しない限りインストール済みライブラリとバージョンが出力されないので、ある環境を他の人の環境でも再現させるという点において難があるのかなと。できるけど、下手すると漏れる恐れがあるという点が微妙。
(Pythonを本格的には書いたことがないので想像です。違ったらすみません)
Poetryのちょっと気になった点
細かい点ではあるのですが、PyCharmからvenvで仮想環境を作った時は、仮想環境の実体がプロジェクトディレクトリの下にできるので、プロジェクトのディレクトリを消せば仮想環境も含めて全部消えるようになっていました。
しかし、Poetryでは仮想環境は別のところに作成されるので、プロジェクトのディレクトリを消しても仮想環境が残ります。別途消す必要があるのがちょっと面倒だなと思いました。
(追記)
コメントにて、プロジェクトのディレクトリ配下に仮想環境を作成する方法を教えていただきました。
以下のコマンドを実行すればOKです。
poetry config virtualenvs.in-project true
設定値は以下のコマンドで確認可能です。
poetry config --list
他にディレクトリの設定等もありますが、そちらはそのままでよさそうです。
ただし、既存の仮想環境は削除しておかないと適用されないようでした。
まとめ
勉強用に個人で開発するくらいならシステムのPython + venv + pipでもよさそうですが、実務での開発ではasdf(もしくはpyenv)でバージョン管理し、Poetryで仮想環境作成 + ライブラリ依存管理がよさそうに思いました。おそらく。
参考リンク
- https://asdf-vm.com/guide/getting-started.html#_1-install-dependencies
- https://blog.haryoiro.com/asdf-makes-tedious-language-version-control-easy/
- https://dev.icare.jpn.com/dev_cat/how_to_use_asdf/
- https://random-tech-note.jp/install-asdf/
- https://qiita.com/ksato9700/items/b893cf1db83605898d8a
- https://python-poetry.org/docs/master/
- https://pleiades.io/help/pycharm/poetry.html
Author And Source
この問題について(asdf+Poetry+PyCharmでPython開発環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/dhirabayashi/items/24cb4881ceef0e37d346著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .