LoginSignup
54
61

More than 3 years have passed since last update.

Pipenv と Pipfile.lock

Posted at

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

54
61
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
61