pipenv¶
pipenv
は pip
と venv
の両方の機能を兼ね備えたサードパーティ製のパッケージ管理ツールです。venv
で仮想環境を作成してから pip
でパッケージをインストールするまでの手順では下記のように異なるコマンドを実行する必要がありますが、これを 1 つのコマンドで実行できるようにしたものが pipenv
です。
操作 | コマンド (macOS, Linux) | コマンド (Windows) |
---|---|---|
仮想環境の作成 | python -m venv .venv |
py -m venv .venv |
仮想環境を有効にする | . .venv/bin/activate |
.venv/Scripts/activate.bat |
仮想環境を無効にする | deactivate |
.venv/Scripts/deactivate.bat |
パッケージのインストール | pip3 install [name] |
py -3 -m pip install [name] |
各操作に応じて実行するコマンドも異なれば OS ごとにも異なっており、とても複雑です。しかし pipenv
を使うと上記の操作は次のようになります。
操作 | コマンド |
---|---|
仮想環境の作成 | pipenv --three |
仮想環境を有効にする | pipenv shell |
仮想環境を無効にする | exit |
パッケージのインストール | pipenv install [name] |
このように pipenv
というコマンド 1 つで仮想環境の作成とパッケージのインストールの両方が実行できるため、操作がシンプルになります。また実行するコマンドは OS によらず同じです。
特徴¶
pipenv
はパッケージのインストールを必ず仮想環境内で実行するように作られています。そのため仮想環境を有効にしていない状態で
$ pipenv install [name]
というコマンドを打っても自動的に仮想環境を作成して、それを有効にした上でパッケージのインストールを実行します。
インストール¶
pipenv
のインストールは下記のようにします。
$ pip3 install pipenv
Note
pipenv
のインストールは仮想環境内で行う必要はありません。なぜなら pipenv
自体が仮想環境を作成するツールだからです。
使い方¶
まず作業用ディレクトリを用意します。
$ mkdir sandbox
pipenv
を使ってサードパーティライブラリの requests
をインストールするには次のようにします。
$ cd sandbox
$ pipenv install requests
自動的に仮想環境が作成され、その仮想環境内に requests
がインストールされます。次に requests
を使用した次のようなソースコードを用意します。
main.py
#!/usr/bin/env python
import requests
def main():
response = requests.get('http://example.com')
print(response.text)
if __name__ == '__main__':
main()
ソースコードを作成したら仮想環境を有効にして実行してみます。
$ pipenv shell
(sandbox) $ python main.py
上記の 2 行のコマンドは次のように 1 行で実行することもできます。
$ pipenv run python main.py
pipenv run [command]
は仮想環境を有効にした上で [command]
を実行してくれる機能です。
Pipfile¶
pip
にはインストールしたいパッケージをテキストファイルに記述しておく requirements.txt
という仕組みがありましたが、pipenv
はこれの代替として Pipfile
というテキストファイルが使用できます。先程の requests
をインストールするとディレクトリ内に Pipfile
が作成されていると思います。
Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
requests = "*"
[requires]
python_version = "3.7"
pipenv
はパッケージをインストールすると Pipfile
にインストールしたパッケージを記録するようになっています。もしディレクトリ内に Pipfile
がある場合、下記のコマンドを実行すると Pipfile
内に記述されたパッケージをインストールしてくれます。
$ pipenv install
つまり Pipfile
をバージョン管理しておくことで他の人の環境でも自分がインストールしたパッケージと同じものをインストールできるようになります。
Pipfile.lock¶
Pipfile
と合わせて Pipfile.lock
というファイルも作成されていると思います。このファイルはインストールしたパッケージのバージョンを保存しているファイルです。pipenv install
でパッケージをインストールすると、インストールされるパッケージのバージョンはその時点での最新版が取得されるようになっているため、自分がインストールしたパッケージのバージョンとは厳密には異なるバージョンのパッケージが他の人の環境にインストールされる可能性があります。もしバージョンも含めて完全に一致するものをインストールしたい場合は Pipfile
の代わりに Pipfile.lock
を使ってインストールすることで実現できます。
Pipfile.lock
を使ってインストールするには次のようにします。
$ pipenv sync
公式サイト¶
pipenv
はここで説明した機能以外にも便利な機能がたくさんあります。詳細は公式サイトに説明がありますので参考にしてみてください。
pipenv 公式サイト