流行り廃りが激しいのでいつまで使うか知らないが Pipenv https://github.com/pypa/pipenv の事を書く。Pipenv は npm みたいなツールだが、ロックファイルの使い方がちょっと違うのでこれだけ先に書く。
Pipfile.lock
Pipenv では、開発者が Pipfile にインストールしたいバージョンの希望を書き、Pipfile.lock に実際にインストールしたバージョンが記録される。こうして開発者がインストールしたのと同じ環境を他の人も再現出来る。次のように使う。
Pipfile.lock を作成した人と同じ環境を再現したい場合。(npm で言うと npm ci)
pipenv install
または pipenv sync でも同じ事が起こる
Pipfile.lock を無視して、Pipfile に記述された最新のパッケージをインストールしたい場合。(npm で言うと npm install)
pipenv update
続けて一般的な使い方を書く。
pyenv もインストールしておくと pipenv 経由で pyenv が呼び出され適切な Python のバージョンが自動インストールされます。
自分で新たに pipenv の環境を作る場合の典型的な作業
インストール例 (多分インストーラでで .zshrc 等に eval "$(pyenv init -)" が書き込まれると思う):
brew install pipenv pyenv
Python のバージョンを指定して新しい環境を作る。Python の自動インストールには pyenv が必要です。
pipenv --python 3.8
環境の中に入る
pipenv shell
実装向けに何かインストールする。pipenv lock も自動的に実行されて Pipfile.lock が更新される。
pipenv install boto3
開発向けに何かインストールする。pipenv lock も自動的に実行されて Pipfile.lock が更新される。
pipenv install --dev autopep8
インストール済パッケージを列挙
pipenv graph
pep-508 で定義されているように依存を確認する。
pipenv check
古くなってしまったパッケージを探す
pipenv update --outdated
古いパッケージを更新。Pipfile.lock を無視して Pipfile だけを見てパッケージを更新する。pipenv lock も自動的に実行されて Pipfile.lock が更新される。
pipenv update
Pipfile を元に Pipfile.lock を最新に更新するが、インストールしない。
pipenv lock
Pipfile.lock を元に 環境を作る。Pipfile.lock が存在する時は pipenv install と同じ。
pipenv sync
環境を削除
pipenv --rm
すでに Pipfile と Pipfile.lock の存在するコードの開発に参加する
Pipfile.lock の通りにパッケージをインストールする。
pipenv install
余談
boto3 https://pypi.org/project/boto3/ みたいに更新の早いパッケージを使うと動作確認しやすい。