やる気がストロングZERO

やる気のストロングスタイル

pipenv [install, update, sync] [Pipfile, Pipfile.lock]について

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は変更されない
作業を手伝ってくれる人がいたので、その人に自分と同じパッケージ環境を整えてもらいたい時などに使う