pipenv パッケージングツール - Python
pipenvとはpipの環境を分離できるツール?。requestsの作成者が作っている。
少し使ってみて、良さそうだったらこれからも使っていきたい。
インストールする
$ pip3 install pipenv
使い方
pipenv
コマンドで使う。
pipenv install
現在のディレクトリに仮想環境を作成
$ pipenv install
pipenv install モジュール名
仮想環境にモジュールをインストールする。(pip install のような感じ)
$ pipenv install python-dateutil
pipenv run コマンド
仮想環境の中でコマンドを実行する
$ pipenv run python3
pipenv graph
インストールされているモジュールの依存関係を表示する
$ pipenv graph python-dateutil==2.6.1 - six [required: >=1.5, installed: 1.11.0] requests==2.18.4 - certifi [required: >=2017.4.17, installed: 2017.7.27.1] - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4] - idna [required: >=2.5,<2.7, installed: 2.6] - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
.env ファイルで専用の環境変数を設定
Pipenvは実行時にディレクトリ内にある .env の内容を自動的に読み込み一時的な環境変数を設定してくれる。これがあれば、direnvいらない!!!
詳しくはこちら
.env を作成する
NAME=tamago
取得する
$ pipenv run python3 Loading .env environment variables… >>> import os >>> os.environ['NAME'] tamago
.env
をgitでは見ないようにするには.gitignore
に以下の記述を追加する
# pipenv .env
いろいろやったこと
仮想環境の作成
プロジェクトのディレクトリに移動し、pipenv install
とする。これによって、そのディレクトリに仮想環境ができる。
$ mkdir myenv; cd myenv $ pipenv install ... $ ls Pipfile Pipfile.lock
作成した仮想環境にモジュールをインストール
pipenv install モジュール名
とすることでインストールできる。pipと同じような感じ
$ pipenv install python-dateutil
仮想環境だけに入っているかを確認してみる。
pipenv run コマンド
とすることで、仮想環境内でコマンドを実行することができる。
$ pipenv run python3 Python 3.6.3 (default, Oct 4 2017, 06:09:15) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import dateutil
しっかりとインストールできていることがわかる
しかし、pipenv run
を使わない場合(仮想環境で実行しない場合)には、python-dateutil
はインストールされていないため、エラーになる。
$ python3 Python 3.6.3 (default, Oct 4 2017, 06:09:15) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import dateutil Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'dateutil'
pip3 list
でもわかる
$ pipenv run pip3 list Package Version --------------- ----------- certifi 2017.7.27.1 chardet 3.0.4 idna 2.6 pip 9.0.1 python-dateutil 2.6.1 requests 2.18.4 setuptools 36.6.0 six 1.11.0 urllib3 1.22 wheel 0.30.0 $ ip3 list Package Version ---------------- ----------- certifi 2017.7.27.1 chardet 3.0.4 flake8 3.5.0 idna 2.6 mccabe 0.6.1 pew 1.1.0 pip 9.0.1 pipenv 8.3.0 pycodestyle 2.3.1 pyflakes 1.6.0 requests 2.18.4 setuptools 36.5.0 urllib3 1.22 virtualenv 15.1.0 virtualenv-clone 0.2.6 wheel 0.30.0
各プロジェクトに.vnev
ディレクトリを作成
~/.bash_profile
(~/.bashrc
)に以下の記述を追加すると、各プロジェクトに.venv
という仮想環境のディレクトリが作られるようになる
export PIPENV_VENV_IN_PROJECT=1
pipenvとGitとDockerを使ったPython開発フロー - Qiita