流行り廃りが激しいのでいつまで使うか知らないが 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/ みたいに更新の早いパッケージを使うと動作確認しやすい。