Skip to content

Instantly share code, notes, and snippets.

@shinseitaro
Last active April 19, 2022 00:14
Show Gist options
  • Save shinseitaro/b1444c24497d168661ba37b9c7a5fe50 to your computer and use it in GitHub Desktop.
Save shinseitaro/b1444c24497d168661ba37b9c7a5fe50 to your computer and use it in GitHub Desktop.
poetry 入門

poetry はじめた

自分の環境

$ cat /etc/os-release 
NAME="Linux Mint"
VERSION="20.3 (Una)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 20.3"
VERSION_ID="20.3"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=una
UBUNTU_CODENAME=focal

インストール

# インストール
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

# アクティベート. .bashrc にも追記した
$ source $HOME/.poetry/env

# 確認
$ poetry --version # Poetry version 1.1.13

基本的な使い方

新しいプロジェクト作成

# 新しいプロジェクト demo を作成
$ poetry new demo
Created package demo in demo

# こういったテンプレートが作成される
$ tree demo/
demo/
├── README.rst
├── demo
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_demo.py

2 directories, 5 files

既存のプロジェクト

$ cd 既存のプロジェクト
$ poetry init

pyproject.toml について

最も大切なファイルは pyproject.toml。ライブラリの依存関係などを管理してくれる設定ファイル。

[tool.poetry]
name = "demo"
version = "0.1.0"
description = ""
authors = ["shinseitaro <********@gmail.com>"]

[tool.poetry.dependencies]
python = "^3.9"

[tool.poetry.dev-dependencies]
pytest = "^5.2"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

ライブラリインストール

方法その1:[tool.poetry.dependencies] セクションに追加後 poetry install

  • pyproject.toml 追記
    [tool.poetry.dependencies]
    python = "^3.9"
    beautifulsoup4 = "" # 追加
  • もし、プロジェクトディレクトリに仮想環境を作成したい場合は
    $ poetry config virtualenvs.in-project true
    • デフォルトは false
    • false の場合は、デフォルトディレクトリ配下 ($HOME/.cache/pypoetry/virtualenvs) に仮想環境が作成される
    • すでに環境を作っている場合は、 poetry config virtualenvs.in-project true は適用されないので、既存の環境を削除してから再作成する必要がある
  • インストール
    $ poetry install
  • 確認
    $ poetry env list --full-path

方法その2:poetry add ライブラリ名

$ poetry add beautifulsoup4
  • 実行後、[tool.poetry.dependencies] に自動で beautifulsoup4 = "バージョン名"` が追記される

インストールに関して

  • お作法としては、方法その1が良いみたい。
  • ただし例のようにバージョンなしではなくバージョン指定したほうがよい。
  • どのバージョンがいいのかわからん場合は、その2でやってみるのが良さそう。インストールされるバージョンは、コンフリクトが起きないバージョンもしくは最新が入るみたい。

環境確認

$ poetry env list --full-path # --full-path はオプション

ライブラリアンインストール

  • 方法その1:[tool.poetry.dependencies] セクションから削除後 poetry update
  • 方法その2:poetry remove ライブラリ名

仮想環境削除

# 仮想環境名取得
$ poetry env list

# 仮想環境削除
$ poetry env remove 環境名

poetry.lock について

  • 依存関係が記述されている
  • インストール、アンインストールするたびに依存関係などを自動修正される
  • 私達が手書きで修正することはほぼ無いそうです

実行

$ poetry run python main.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment