こんにちは、技術開発ユニットの三浦です。最近寒くなり、日が出ている時間も短くなってきました。冬が近づいてきたなぁと感じます。クリスマスやお正月など、明るい行事がこれからやってくる今頃の時期はいくつになってもワクワクします。
さて、Pythonの実験環境をWindows PCに構築してみた話の続きを今回は紹介させていただきます。前回は1つの端末(OS)の中に複数のPythonのversionをインストールすることが出来るpyenvについて紹介しました。
今回はPythonのプロジェクトごとに必要なlibraryや環境などを管理することを可能にするpoetryというツールについて紹介します。
poetry
poetryはPythonのlibraryのインストールやアップデートや依存関係の管理、プロジェクトのbuildや公開などを簡単に行うことを可能にするツールです。
プロジェクトごとに仮想環境を作成し、その中に閉じた形でPythonのlibraryを追加してくれるので他のプロジェクトに影響を与えない独立した状態でプロジェクトを作ることができます。
poetryのインストール
公式のHPにはOSごとにインストールの手順が掲載されています。今回はWindowsの手順を行いました。PowerShellを起動して以下のコマンドを実行します。
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
コマンドの実行が完了したら、次のコマンドを実行し、インストールされたpoetryのバージョンが出力されたらOKです。
poetry --version
ちなみにpoetryをアンインストールするときは以下のコマンドを実行します。
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python - --uninstall
使ってみる
とりあえずテストプロジェクトを作ってみます。 まず適当なフォルダを作り、そこにpoetryのプロジェクトを作ります。PowerShellで
mkdir test cd test poetry init
のようにコマンドを実行し、最後のコマンドpoetry init
を実行すると対話形式でpoetryのプロジェクトの初期設定がはじまります。それらが終了すると、フォルダの中にpyproject.toml
というファイルが生成されていると思います。このファイルはプロジェクトの説明や依存しているPythonのlibraryが記録されたファイルです。
[tool.poetry] name = "test" version = "0.1.0" description = "" authors = ["Your Name <you@example.com>"] [tool.poetry.dependencies] python = "^3.10" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
次にこのプロジェクトに何かlibraryを追加してみます。libraryの追加はadd
コマンドで行うことが出来ます。
poetry add flask
pyproject.toml
のtool.poetry.dependencies
セクションを見ると、今追加したlibraryが追加されていると思います。
add
コマンドを実行した際に以下のようなエラーが出ることがありました。私の環境ではnumpy
を追加した時に発生しました。
・・・ • Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties For numpy, a possible solution would be to set the `python` property to ">=3.10,<3.11" https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies, https://python-poetry.org/docs/dependency-specification/#using-environment-markers
エラーメッセージを見る限り、python
プロパティの設定を">=3.10,<3.11"
のように変える必要があるようです。pyproject.toml
ファイルのtool.poetry.dependencies
セクションのPythonのversion指定の箇所を
[tool.poetry.dependencies] python = ">=3.10,<3.11"
のように変更すると追加することが出来ました。
pyenvでlocalに設定したPythonのversionでpoetryのプロジェクトを作る
最後に前回のpyenvと合わせ技で、pyenvのlocalのPythonのversionで、poetryプロジェクトを作ってみます。フォルダを作り、pyenvでlocalのPythonのversionを設定します。
mkdir pyenv-poetry-test cd pyenv-poetry-test pyenv local 3.9.8
次にpoetry init
を実行し、poetryプロジェクトの初期設定を行います。初期設定が完了したらlibraryを追加していきます。データ分析でよく利用するpandas
, jupyter
を追加してみます。
poetry add pandas jupyter
仮想環境の中でPythonを動かしてみます。
poetry run python
pyenvでlocal指定したPythonのversionが起動します。最後に仮想環境上でjupyter
サーバを起動します。
poetry run jupyter notebook
ブラウザが起動し、jupyter notebook
が利用できればOKです。
まとめ
pyenvとpoetryを使ってPythonの実験用の環境をWindows PCに作ってみました。ところどころエラーが出て困った箇所もありました。もし同様のエラーが出た際 、本記事の内容が一助になれば幸いです・・・。