👾

poetryとVSCodeで仮想環境の構築(Windows10)

2022/10/20に公開約2,200字

poetryとVSCodeで仮想環境の構築(Windows10)

1. poetryとは

PoetryはPythonのパッケージマネージャの一つです。
次のようなことができます。

  • パッケージ管理ファイルの生成・変更
  • インストールされているパッケージのアップデート
  • プロジェクトごとの仮想環境のセットアップ

などなど...

2. インストール

基本

- Python のセットアップ

PoetryのインストールにPythonが必要なので既に入っている前提ですが、一応。
Python JapanのサイトからWindows版Pythonをインストール

- poetry(公式サイト)のインストール

公式サイト:https://python-poetry.org/docs/
Windows(Powershell)での導入方法は次のコマンドです。
(Macなどの環境でのインストール方法は色んな方がまとめているので省略します)

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

※pyコマンドが実施できない場合は、py -> python に変更してください。(以下のコマンド)

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

- PATHを通す

poetryをインストールした際に下の方で

To get started you need Poetry's bin directory
(C:\Users\{user_name}\AppData\Roaming\Python\Scripts)
environment variable.

みたいなことを言われますので、()内をコピーして環境変数のPATHに設定してください。

  • 環境変数の編集は以下参照

- 実行してみる

poetry --version
Poetry (version 1.2.2)

みたいに出ればインストール完了です。

- 注意点

既にPythonをインストールしている場合...

まずPythonをちゃんとインストールしているか確認が必要。
環境変数のPATHが上記で通らない場合などは、Pythonをインストールをやり直すことをお勧めします。

3. 使い方

- 事前設定

  • 仮想環境の作成先をprojectと同じディレクトリにしたい
poetry config virtualenvs.in-project true
  • 設定を確認する
poetry config --list

- poetry initの実行

  • カレントディレクトリを仮想環境化するため以下のコマンドを実施。
poetry init

対話インターフェースになりますが、全部EnterでOK
カレントディレクトリにpyproject.tomlが作成されます。

- poetry shellの起動

以下のコマンドでpoetryで仮想環境を起動しましょう。

poetry shell

インタープリターの選択で「はい」を選択しておく、プロジェクト内のPythonファイルを実行するときに仮想環境で実行されるようにするため。
間違えたら、インタープリターの選択でpyenvを選びなおす。
poetry shellはexitでいったん終了しておく。

- 確認方法

仮想環境へのライブラリのインストール

以下のコマンドで仮想環境にライブラリをインストールしてみる。例はpendulumとする。

poetry add pendulum

test.pyの実行

仮想環境構築を確認するため、test.pyを作成し、以下のコードをcopy&pasteする。

import pendulum
print(pendulum.now())

実行して現在の時間が表示されればOK。
エラーが起きる場合、ライブラリのインストールがどこにされているか確認してください。

4. poetry コマンド一覧

仮想環境の確認

poetry env list

仮想環境の削除

poetry env remove {name}

5. おわりに

開発現場ではかなり重要になる仮想環境の構築であり、poetryはかなり便利なツールなのはわかるのですが、初心者には難しく、自分も手間取ったのでメモしておこうと思いました。

以上

Discussion

ログインするとコメントできます