pipenv
コマンドとPipfile
/Pipfile.lock
で依存パッケージを管理しているプロジェクトで、ちょっとした開発ツールを入れてみたい。
でも、pipenv install --dev
で、Pipfile
/Pipfile.lock
を変更して、他の開発メンバーに影響を与えるのは避けたい(ex. 他メンバーとは好みが違う。お試しで使ってみたいだけなど)。
解決法: pipenv run pip install
を使いましょう
pipenv run pip install
で、Pipfile
を変更せずに、仮想環境にパッケージを追加できます。
例:
$ pipenv run pip install jupyter # 仮想環境にインストール
$ pipenv run jupyter # 仮想環境のコマンドを実行
解説
ご存知の通り、pipenv
は標準ライブラリのpip
(などの)のラッパーであり、仮想環境内の pip
を直接呼び出せば Pipfile
を更新せずにパッケージをインストールできます。
$ ~/.local/share/virtualenvs/patissier-okggs9cf/bin/pip install jupyter # pip を直接呼び出す
とはいえ、仮想環境のパスはプロジェクトごとに異なり、いちいちパスを調べるのは面倒なので、「仮想環境内のコマンドを実行する」ために pipenv run
コマンドが用意されています。
pipenv run
は環境変数$PATH
に仮想環境のbin/
を追加します。
$ pipenv run env | grep PATH
PATH=/Users/a-hoge/.local/share/virtualenvs/patissier-okggs9cf/bin:【元々のPATHの内容】
これにより、pipenv run pip install
は、仮想環境のpip install
を実行することになります。
$ pipenv run pip install jupyter # 仮想環境にインストール