poetryとVSCodeで仮想環境の構築(Windows10)
poetryとVSCodeで仮想環境の構築(Windows10)
1. poetryとは
PoetryはPythonのパッケージマネージャの一つです。
次のようなことができます。
- パッケージ管理ファイルの生成・変更
- インストールされているパッケージのアップデート
- プロジェクトごとの仮想環境のセットアップ
などなど...
2. インストール
基本
- Python のセットアップ
PoetryのインストールにPythonが必要なので既に入っている前提ですが、一応。
Python JapanのサイトからWindows版Pythonをインストール
-
https://www.python.jp/install/windows/install.html
バージョンはどれでも大丈夫だと思いますが、とりあえず最新版をインストール。 - "Add Python 3.x to PATH" をチェックを忘れないようにしてください
- 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