タイトル通りですが,私はpythonを使い始めて約2年の間一途にpyenv-virtualenv
を使ってきました.ですが最近友人からのススメでpipenv
がとても良いとのことなのでしばらく使ってみることにしました.
今回の記事は環境構築と2週間ほど使ってみた感想を記します.
環境
- mac OS Mojave バージョン10.14.4
- pyenv 1.2.11
- pipenv, version 2018.11.26
- Homebrew 2.1.1
前提条件
この記事ではhomebrew
とpyenv
が使えることを前提条件としています.
pipenvって何者?
さすがにまだ2週間しか使ってないので詳しくわわかりませんが,一言で言うなら「仮想環境でpythonを動かせるツール」です.
詳しくはこちらの記事が参考になると思います.
pipenv のインストール
homebrewでインストール可能なので,今回はこちらのやり方のみ紹介します.
$ brew insatll pipenv
使い方
pythonのバージョン指定
まずは任意のディレクテリ下でpythonのバージョンを指定し,下準備を整えます.
$ pipenv --python 3.7
--python
でpythonのバージョンを指定できるので,細かく指定したい場合は上記のようにしたらいいと思います.
他にも--three
で3系,--two
で2系を選択することも可能みたいです.
パッケージのインストール
続いてパッケージのインストール方法です.
$ pipenv install numpy matplotlib pandas
Installing numpy…
Adding numpy to Pipfile's [packages]…
✔ Installation Succeeded
Installing matplotlib…
Adding matplotlib to Pipfile's [packages]…
✔ Installation Succeeded
Installing pandas…
Adding pandas to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (6e010b)!
Installing dependencies from Pipfile.lock (6e010b)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 9/9 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
pipenv install
以降にスペース区切りで並べることで,複数のパケージをインストールすることができます.当然1つしか記述しない場合も同様に動作します.
実行例
とりあえずpythonをターミナル上で動かしてみましょう.
$ pipenv run python
Python 3.7.3 (default, Mar 27 2019, 09:23:15)
[Clang 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
pipenvで作成した環境を使用する際は,pipenv run
コマンドを使用すれば問題ないです.
また,別の方法としては以下のような方法もあります.
$ pipenv shell
(hoge)$ python
Python 3.7.3 (default, Mar 27 2019, 09:23:15)
[Clang 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
pipenv shell
でpipenvで用意した仮想環境に入ることができます.
環境から抜ける場合はexit
を使用します.
(hoge)$ exit
$
続いてファイルに記述したコードを使用する場合です.
print("hello")
$ pipenv run python hoge.py
hello
とりあえずざっとこんな感じですかね.
感想
使ってる感じ今までpyenvとpyenv-virtualenvを使用してpythonの環境を整えていたので,そこらへんが1つにまとまったような感じですかね.率直な意見としては1つにまとまってわかりやすくなったし,わざわざパッケージのリストを出力する必要がなくなったのは嬉しいですが,ちょっとパッケージのインストールとか時間かかりすぎじゃね?って思う面もありますね.
それとパッケージのインストールは今までpip
でやってたので,コマンドが長くなったのは一番しんどいですね(^_^;)
なので少しだけaliasを設定したので,必要な方はそこらへん自分好みにアレンジしてみるのもいいかもしれません!
alias ppython='pipenv run python'
alias pprun='pipenv run'
alias ppi='pipenv install'
alias ppl='pipenv run pip list'
参考資料
Pipenv: 人間のためのPython開発ワークフロー
Pipenvを使ったPython開発まとめ
pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。