herokuデプロイに必要で雰囲気で使っていたが、
ちょっと調べたのでまとめておく。
pipenv バージョン 2018.7.1
PipfileとPipfile.lockの違い
Pipfileはどういうパッケージをどのバージョンで入れたいかを指定するファイルで、
実際に入ったパッケージの詳細な状態情報がPipfile.lock。
Pipfile
[packages] django = "*" (最新版を入れたい場合) django = "==2.0.0"(特定バージョンを入れたい場合) django = "==2.*" (2の最新バージョンを入れたい場合)
Pipfile.lock
"django": { "hashes": [ "sha256:97886b8a13bbc33bfeba2ff133035d3eca014e2309dff2b6da0bdfc0b8656613", "sha256:e900b73beee8977c7b887d90c6c57d68af10066b9dac898e1eaf0f82313de334" ], "index": "pypi", "version": "==2.0.7"(実際に入ったバージョン) },
pipenv install Django pipenv install 'Django==2.*'
とpipenvを使ってインストールするとPipfileに自動で記入される。(べつに自分で記入してもいい)
[pipenv install]と[pipenv update]と[pipenv sync]の違いと用途例
[pipenv install]
Pipfileに記載された内容の最新状態でパッケージをインストールし、その内容でPipfile.lockを作成する。
新しく環境を作っていて、パッケージ最新状態でいれたい場合などに使う
[pipenv update]
Pipfileに記載された内容と実際にインストールされている状態を確認し、update出来るパッケージがあればupdateしてその状態でPipfile.lockを作成する
既にpipenv installなどでパッケージをインストールしている環境で、なんかいろいろパッケージがアップデートされているっぽいのでアップデートしたい時などに使う
[pipenv sync]
パッケージのインストール状況をPipfile.lockと同じ内容にする。Pipfile.lockは変更されない
作業を手伝ってくれる人がいたので、その人に自分と同じパッケージ環境を整えてもらいたい時などに使う