pipenv
簡単に言えば、複数のプロジェクトでpipを使う際にバージョン関係などを管理してくれるものです。pythonだとpyenv
、rubyならrbenv
などがあります。
環境
- Mac
- Python(pyenv)
- pip
Pythonはpyenvを使っています。pyenvについては省略します。
# pyenvのバージョン
nomunomu:virtual_pip nomunomu$ pyenv --version
pyenv 1.2.8
# Pythonのバージョン
nomunomu:virtual_pip nomunomu$ python --version
Python 3.5.2
# pipのバージョン
nomunomu:virtual_pip nomunomu$ pip --version
pip 9.0.1 from /Users/nomunomu/.pyenv/versions/3.5.2/lib/python3.5/site-packages (python 3.5)
手順
pipenvのインストール
$ pip install pipenv
pipenvで仮想環境を作成
$ cd Desktop/
$ mkdir virtual_pip # 検証用ディレクトリの作成
$ cd virtual_pip # 検証用ディレクトリに移動
$ pipenv install # 仮想環境 と Pipfile を作成
$ ls -a
. .. .venv Pipfile Pipfile.lock
pipenv install
で扱われるPythonのバージョンは、そのディレクトリで認識しているPythonのバージョンとなります。そのためディレクトリごとにPythonのバージョンを変更したい場合には、pyenvなどでpyenv local x.xx.xxx
して、各自設定しておいてください。
Pipfile
やPipfile.lock
はGem
と同様でGemfile
, Gemfile.lock
と同じように扱います。そのためインストールしたいものがあれば、Pipfile
に記述するか、コマンドでインストールすることになります。
仮想環境に入る場合には
$ pipenv shell
で、仮想環境に入る事ができます。
ライブラリ群のインストール
ライブラリのバージョンを指定する場合にはバージョンを==
の後に指定すればOKです
nomunomu:virtual_pip nomunomu$ pipenv install requests django==1.11.16 djangorestframework django-filter
Installing requests…
Adding requests to Pipfile's [packages]…
Installing django==1.11.16…
✔ Installation Succeeded
Adding django to Pipfile's [packages]…
Installing djangorestframework…
✔ Installation Succeeded
Adding djangorestframework to Pipfile's [packages]…
Installing django-filter…
✔ Installation Succeeded
Adding django-filter to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock (2aa341) out of date, updating to (a79791)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (2aa341)!
Installing dependencies from Pipfile.lock (2aa341)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 9/9 — 00:00:03
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
仮想環境に入って、ライブラリ群が正常にインストールされているか確認します。pipenv shell
を実行するとpipenv install
を実行したディレクトリ名の基でShellが起動します。(virtual_pip) $
みたいな感じで
$ pwd
/Users/nomunomu/Desktop/virtual_pip
$ pipenv shell
(virtual_pip) bash-3.2$ pip list
Package Version
------------------- ----------
certifi 2018.11.29
chardet 3.0.4
Django 1.11.16
django-filter 2.0.0
djangorestframework 3.9.0
idna 2.7
pip 18.1
pytz 2018.7
requests 2.20.1
setuptools 40.6.2
urllib3 1.24.1
wheel 0.32.3
依存パッケージも同時にインストールされているので、実際に指定したライブラリより多くなっているはずです。
Djangoプロジェクトの作成
Djangoプロジェクトは仮想環境から作成します。そのため、作業する前に仮想環境に入っておきます。
$ pipenv shell
(virtual_pip) bash-3.2$
今回作成するDjangoプロジェクトの名前をdjango-sample
としておきます。
(virtual_pip) bash-3.2$ django-admin startproject django_sample
作成が完了したら、一旦仮想環境を抜けて、仮想環境が保存されているパスを確認します。このパスを次のPyCharmの設定の時に使うのでメモかコピーをしておいてください。
(virtual_pip) bash-3.2$ exit
exit
$ pipenv --venv
/Users/nomunomu/.local/share/virtualenvs/virtual_pip-zYG2eaTO
pipenv --venv
によって出力されるパスはそれぞれ異なりますので、この記事のを指定しても正常に動作しません。
PyCharmのセッティング
PyCharmを起動したら、起動画面よりOpen
を選択して作成したDjangoプロジェクトを選択します。この時選択するのはpipenv --venv
で出力されたものではなく、Djangoプロジェクト本体です。この記事では/Users/nomunomu/Desktop/virtual_pip/django_sample
になります。
プロジェクトを開いたら、Command + ,
でPreferenceを開きます。そしたら、検索のところでproject interpreter
と打ち込むと以下のような画面がでてきます。この画面で、右上のギアマークを選択し、Add Local
を選択します。
そうしたら、フォルダ選択画面になるので、先ほどメモしたディレクトリまで移動します。そのフォルダの中にbin
フォルダが存在していて、その中にpython
というファイルが存在します。そのファイルを選択して、OKします。
そうすると、Project Interpreter
の画面がこのような感じに変わると思います。
ウィンドウ右下のOKを押すと、このプロジェクトをPyCharmで開くと自動的に仮想環境の設定を読み込んでくれるようになります。なので、PyCharm付属のターミナルを設定後に開くと、自動的に仮想環境内でターミナルを開いているのと同じ状態になります。
これによって自動的にデバッグも仮想環境のDjangoを使って起動する事ができます。
まとめ
とりあえず、この設定方法さえできてしまえば、複数プロジェクトでバージョンの異なるライブラリを利用する時にも、簡単に複数のpipを共存させる事ができます。以上です!