以下の内容はhttps://7rikazhexde-techlog.hatenablog.com/entry/2022/10/29/223540より取得しました。


MacでPoetryをインストールする方法について

更新情報

2025/02/16

下記記事でも記載していますが、Poetryのver2.0.0でPEP621対応がサポートされました。

7rikazhexde-techlog.hatenablog.com

プロジェクト作成時に実行する、poetry newコマンドやpoetry initコマンドを使用する場合は従来の[tool.poetry]セクションから、[project]セクションがデフォルトとして適用されます。一方で、[tool.poetry]セクションも引き続きサポートされており、手動でpyproject.tomlを編集することで使用可能です。

poetry publishコマンドやpoetry exportコマンドは両セクションでも使用できますが、両方使用する場合は、[project]セクションが優先され、[tool.poetry]セクションを使用している場合、poetry checckコマンドによる構文チェックで警告が表示されます。

また他ツールの情報として、GitHubでpoetryによるpyproject.tomlをdependabotで更新使用する場合は、[project]セクションがまだ未サポートあるため、[tool.poetry]セクションを追加する必要があります。

本記事では[tool.poetry]セクションによる記載のため情報が古いです。[project]セクションで作成する場合は公式ドキュメントを参照してくだい。

はじめに

Pythonではこれまでrequirements.txtでパッケージ管理していましたが、プロジェクト管理を1パッケージずつバージョンアップ管理するのが手間に感じたので、
Node.jsで使用されているnpmのpackage.json によるパッケージ管理と同様のことができるPoetryというプロジェクトを知り導入することにしました。

本記事ではMacにPoetryをインストールした際の手順や確認したことをまとめます。
また以下の記事ではGitHubリポジトリで管理している既存のプロジェクトに適用した例も紹介しています。

7rikazhexde-techlog.hatenablog.com

注意事項

本記事は2022/10/29時点の情報です。
Poetryは都度アップデートされている状況のため、内容が古くなる可能性もありますのでご注意ください。
詳細は公式ドキュメントを確認してください。

Poetryのインストール

Poetryをサクッと使い始めてみるを参考にさせていただいたところ、
インストール時に非推奨と警告が表示されたため一度アンインストールし、公式の手順を確認しました。
本指定ではself updateコマンドで 1.2.0a1 以降にアップグレードすることができないようです。
※一部記載を環境変数に置き換えていますのでご注意ください。

% curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
Retrieving Poetry metadata

This installer is deprecated. Poetry versions installed using this script will not be able to use 'self update' command to upgrade to 1.2.0a1 or later. It is recommended to use https://install.python-poetry.org instead. Instructions are available at https://python-poetry.org/docs/#installation
# Welcome to Poetry!

This will download and install the latest version of Poetry,
a dependency and package manager for Python.

It will add the `poetry` command to Poetry's bin directory, located at:

$HOME/.poetry/bin

This path will then be added to your `PATH` environment variable by
modifying the profile files located at:

$HOME/.profile
$HOME/.zshrc
$HOME/.bash_profile

You can uninstall at any time by executing this script with the --uninstall option,
and these changes will be reverted.

Installing version: 1.1.14
  - Downloading poetry-1.1.14-darwin.tar.gz (70.76MB)

Poetry (1.1.14) is installed now. Great!

To get started you need Poetry's bin directory ($HOME/.poetry/bin) in your `PATH`
environment variable. Next time you log in this will be done
automatically.

To configure your current shell run `source $HOME/.poetry/env`

アンインストール

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - --uninstall

公式のインストール手順

Installation -> With the official installerに従いインストールしました。
https://python-poetry.org/docs/master/#installing-with-the-official-installer
※一部記載を環境変数に置き換えていますのでご注意ください。

% curl -sSL https://install.python-poetry.org | python3 -
Retrieving Poetry metadata

# Welcome to Poetry!

This will download and install the latest version of Poetry,
a dependency and package manager for Python.

It will add the `poetry` command to Poetry's bin directory, located at:

$HOME/Library/Python/3.10/bin

You can uninstall at any time by executing this script with the --uninstall option,
and these changes will be reverted.

Installing Poetry (1.1.14): Done

Poetry (1.1.14) is installed now. Great!

To get started you need Poetry's bin directory ($HOME/Library/Python/3.10/bin) in your `PATH`
environment variable.

Add `export PATH="$HOME/Library/Python/3.10/bin:$PATH"` to your shell configuration file.

Alternatively, you can call Poetry explicitly with `$HOME/Library/Python/3.10/bin/poetry`.

You can test that everything is set up by executing:

`poetry --version`

poetryコマンドの実行パスをzprofileに環境変数$PATHを追加する

# poetry
export PATH="$HOME/Library/Python/3.10/bin:$PATH"

注意

poetry 1.6.1時点では以下のパスが表示されていました。
インストール時は出力内容を確認してください。

Add `export PATH="[$HOMEのパス]/.local/bin:$PATH"` to your shell configuration file.

コマンド実行

設定ファイル確認

% poetry config --list
cache-dir = "$HOME/Library/Caches/pypoetry"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.path = "{cache-dir}/virtualenvs"  # $HOME/Library/Caches/pypoetry/virtualenvs

仮想環境の設定変更

virtualenvs.in-projectの設定を変更して各プロジェクト配下に仮想環境を作るようにしました。
これで仮想環境の実体が入ったフォルダ(python.exe, 各パッケージ)を、 各プロジェクト直下の .venv に作成されるようになります。
(参考:#using-your-virtual-environment)

% poetry config virtualenvs.in-project true

% poetry config --list  
cache-dir = "$HOME/Library/Caches/pypoetry"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = true # 変更された
virtualenvs.path = "{cache-dir}/virtualenvs"  # $HOME/Library/Caches/pypoetry/virtualenvs

プロジェクトのセットアップ

プロジェクトのセットアップについては以下記事を参照ください。
非常にで分かりやすく紹介されていますので共有させていただきます。

仮想環境のセットアップ

上記記事を参考にさせていただき、poetry_testというプロジェクト名で仮想環境をセットアップしました。

% poetry new poetry_test
Created package poetry_test in poetry_test
% poetry install
Updating dependencies
Resolving dependencies... (9.8s)

Writing lock file

Package operations: 4 installs, 2 updates, 0 removals

  • Updating pyparsing (3.0.4 -> 3.0.9)
  • Updating attrs (21.4.0 -> 22.1.0)
  • Installing more-itertools (8.14.0)
  • Installing pluggy (0.13.1)
  • Installing py (1.11.0)
  • Installing pytest (5.4.3)

Installing the current project: poetry_test (0.1.0)

パッケージ追加

パッケージとして、requestsとPySimpleGUIを追加してみます。

% poetry add requests
Using version ^2.28.1 for requests

Updating dependencies
Resolving dependencies... (0.9s)

Writing lock file

Package operations: 4 installs, 1 update, 0 removals

  • Updating pyparsing (3.0.4 -> 3.0.9)
  • Installing charset-normalizer (2.1.1)
  • Installing idna (3.3)
  • Installing urllib3 (1.26.11)
  • Installing requests (2.28.1)

% poetry add pysimplegui
Using version ^4.60.3 for PySimpleGUI

Updating dependencies
Resolving dependencies... (0.3s)

Writing lock file

Package operations: 1 install, 1 update, 0 removals

  • Updating pyparsing (3.0.4 -> 3.0.9)
  • Installing pysimplegui (4.60.3)

% cat pyproject.toml 
[tool.poetry]
name = "poetry_test"
version = "0.1.0"
description = ""
authors = ["[user.name] <[user.mail]>"]

[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.1" # 追加された
PySimpleGUI = "^4.60.3" # 追加された

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

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

<補足>パッケージ追加/削除

  • poetry addで追加すると(.venv) pip freezeで表示される
  • poetry removeで削除すると(.venv) pip freezeから表示されなくなる
  • (.venv)pip installでもパッケージをインストールできるが、pyproject.tomlには記録されない
[ユーザー名]@[コンピューター名] poetry_test % poetry remove pysimplegui
Updating dependencies
Resolving dependencies... (0.1s)

Writing lock file

Package operations: 0 installs, 0 updates, 1 removal

  • Removing pysimplegui (4.60.3)
[ユーザー名]@[コンピューター名] poetry_test % poetry shell             
Spawning shell within $HOME/develop/python/poetry_test/.venv
Restored session: 2022年 8月21日 日曜日 18時55分31秒 JST
[ユーザー名]@[コンピューター名] poetry_test % . $HOME/develop/python/poetry_test/.venv/bin/activate
(.venv) [ユーザー名]@[コンピューター名] poetry_test % pip freeze                                                        
(.venv) [ユーザー名]@[コンピューター名] poetry_test % pip install pysimplegui
Collecting pysimplegui
  Using cached PySimpleGUI-4.60.3-py3-none-any.whl (509 kB)
Installing collected packages: pysimplegui
Successfully installed pysimplegui-4.60.3
(.venv) [ユーザー名]@[コンピューター名] poetry_test % exit

Saving session...completed.
[ユーザー名]@[コンピューター名] poetry_test % cat pyproject.toml       
[tool.poetry]
name = "poetry_test"
version = "0.1.0"
description = ""
authors = ["[[user.name(git config)] <[user.email(git config)>"]

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

[tool.poetry.dev-dependencies]

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

poetry addでパッケージ追加後、(.venv)でpipコマンドで削除してもpyproject.tomlには残る

[ユーザー名]@[コンピューター名] poetry_test % poetry add pysimplegui         
Using version ^4.60.3 for PySimpleGUI

Updating dependencies
Resolving dependencies... (0.1s)

Writing lock file

No dependencies to install or update
[ユーザー名]@[コンピューター名] poetry_test % poetry shell             
Spawning shell within $HOME/develop/python/poetry_test/.venv
Restored session: 2022年 8月21日 日曜日 18時56分37秒 JST
[ユーザー名]@[コンピューター名] poetry_test % . $HOME/develop/python/poetry_test/.venv/bin/activate
(.venv) [ユーザー名]@[コンピューター名] poetry_test % pip freeze
PySimpleGUI==4.60.3 #存在する
(.venv) [ユーザー名]@[コンピューター名] poetry_test % pip uninstall pysimplegui
Found existing installation: PySimpleGUI 4.60.3
Uninstalling PySimpleGUI-4.60.3:
  Would remove:
    $HOME/develop/python/poetry_test/.venv/bin/psghelp
    $HOME/develop/python/poetry_test/.venv/bin/psgissue
    $HOME/develop/python/poetry_test/.venv/bin/psgmain
    $HOME/develop/python/poetry_test/.venv/bin/psgsettings
    $HOME/develop/python/poetry_test/.venv/bin/psgupgrade
    $HOME/develop/python/poetry_test/.venv/bin/psgver
    $HOME/develop/python/poetry_test/.venv/lib/python3.10/site-packages/PySimpleGUI-4.60.3.dist-info/*
    $HOME/develop/python/poetry_test/.venv/lib/python3.10/site-packages/PySimpleGUI/*
Proceed (Y/n)? Y
  Successfully uninstalled PySimpleGUI-4.60.3 # pipコマンドでuninstallした
(.venv) [ユーザー名]@[コンピューター名] poetry_test % exit

Saving session...completed.

[ユーザー名]@[コンピューター名] poetry_test % cat pyproject.toml       
[tool.poetry]
name = "poetry_test"
version = "0.1.0"
description = ""
authors = ["[[user.name(git config)] <[user.email(git config)>"]

[tool.poetry.dependencies]
python = "^3.10"
PySimpleGUI = "^4.60.3" #消えていない

[tool.poetry.dev-dependencies]

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

Poetryのバージョンアップデート

Poetryのバージョンアップはpoetry self updateを実行します。

% poetry self update
Updating Poetry to 1.2.2

Updating dependencies
Resolving dependencies... (15.2s)

Package operations: 10 installs, 12 updates, 0 removals

  - Updating certifi (2022.6.15 -> 2022.9.24)
  - Updating idna (3.3 -> 3.4)
  - Installing more-itertools (9.0.0)
  - Installing pycparser (2.21)
  - Updating urllib3 (1.26.11 -> 1.26.12)
  - Installing attrs (22.1.0)
  - Installing cffi (1.15.1)
  - Updating distlib (0.3.5 -> 0.3.6)
  - Installing jaraco.classes (3.2.3)
  - Updating poetry-core (1.0.8 -> 1.3.2)
  - Installing pyrsistent (0.18.1)
  - Updating cachecontrol (0.12.11 -> 0.12.12)
  - Updating cleo (0.8.1 -> 1.0.0a5)
  - Installing dulwich (0.20.46)
  - Installing jsonschema (4.16.0)
  - Updating keyring (23.8.2 -> 23.9.3)
  - Updating packaging (20.9 -> 21.3)
  - Installing poetry-plugin-export (1.1.2)
  - Updating tomlkit (0.11.4 -> 0.11.6)
  - Updating virtualenv (20.16.3 -> 20.16.6)
  - Installing xattr (0.9.9)
  - Updating poetry (1.1.14 -> 1.2.2)

Updating the poetry script

Poetry (1.2.2) is installed now. Great!

以上です。




以上の内容はhttps://7rikazhexde-techlog.hatenablog.com/entry/2022/10/29/223540より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14