はじめに
ミリオンライブ!は全員がセンター!
祝・主演制公演🎉 nikkieです。
すごいことに気づいてしまいました。
何度も何度も仮想環境を作る中で境地に達した、あるいは、夏の暑さのせいかもしれません。
目次
Pythonチュートリアルより
取り上げられているのは
- 仮想環境
- 作成
python -m venv .venv
- 有効化
source .venv/bin/activate
- 作成
- パッケージの管理
pip
python -m pip install
何度も何度も通ってきた道です。
これらのコマンドを開発者が実行しているんだよなということに気づきました。
俺達は、Pythonのパッケージ管理システムの一部
Pythonで開発する者は皆、Pythonのパッケージマネージャになっていると考えます1。
要は、Pythonチュートリアルの方法は、人力を前提にしたパッケージ管理方法ということです。
パッケージマネージャ うちら の振る舞い
venv
やpip
単体では、望ましいパッケージ管理(=仮想環境にインストールする)ができません。
これらは組み合わせる必要があり、自動化するツールを学ばずに済ませようと思ったら、PythonチュートリアルにあるようにPython使いがパッケージマネージャとなります。
小さな機能を果たすモジュールを人がつなぎ合わせることで、人とツールからなるシステムとしてPythonのパッケージ管理が実現します。
もちろん、ソフトウェアエンジニアリングの経験から、システムからは可能な限り人は排した方がよいと考えます。
そのためには何らかのパッケージマネージャ(=ツール)を覚えることになるかなと思います:
Poetry, Pipenv, Hatch, PDM などなど4
各種パッケージマネージャは、いずれも小さな機能を果たすモジュールを組合せて実現されています。
俺達は機能豊富なパッケージマネージャにはなれていない
先述のチュートリアルでは以下も紹介されます
- アンインストール
python -m pip uninstall
- 環境の再現
- 一覧
python -m pip freeze > requirements.txt
- 一覧からインストール
python -m pip install -r requirements.txt
- 一覧
しかしながら、人・venv
・pip
の組合せは、機能面では十分とは言えないと感じます。
機能が足りずに厳しいなという例はuninstall5
こういった感覚を抱き始めたら、パッケージマネージャのツールに移行する機会なのかなと思います。
俺達はやがて不要となるのです
終わりに
Pythonのパッケージ管理において、仮想環境を作ってインストールというやり方は、操作する人を含めたパッケージ管理システムであるという気づきでした。
俺が、俺達が、Pythonのパッケージマネージャなんだ!!!!
今日初めて認識したんですが、Pythonにおいては
— nikkie / にっきー 技書博 け-04 Python型ヒント本 (@ftnext) 2024年7月19日
俺が、俺達が、パッケージマネージャ(の一部)だったんだよ!!
仮想環境を作って、有効化して、そこに依存ライブラリをインストールするという部分を担う俺達が、パッケージマネージャなんだよ!!
原始的なパッケージマネージャ 俺達⭐️からの移行先、機能豊富なパッケージマネージャ(のツール)は本当にたくさんあります。
Pythonにはパッケージマネージャがありすぎるという指摘は、人力パッケージ管理の余地がなく、パッケージ管理が成熟したプログラミング言語から見える様子ということなのだと思います。