概要
新品のmacOS Mojaveにpython環境をセットアップしてみる.
最近のpython環境事情を調べてみると,pyenv + pipenv + direnvというのが良さそうだったので自分へのメモがてら記事にしてみます.
今回構築する環境は
- どうでもいいディレクトリ内ではpython3の環境で適当にスクリプトを実行できるようにしたい
- ある程度重要なプロジェクト内ではPipfileを使ってしっかりパッケージ管理したい
というモチベーションでセットアップしていきます.
pyenvのインストール
$ brew install pyenv
さらに.bashrc
に以下のように追加
.bashrc
### pyenv ###
iexport PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
pipenvのインストール
$ brew install pipenv
さらに.bashrc
に以下のように追加
.bashrc
### pipenv ###
eval "$(pipenv --completion)"
direnvのインストール
$ brew install direnv
さらに.bashrc
に以下のように追加
.bashrc
### direnv ###
eval "$(direnv hook bash)"
コケた箇所
pyenvで新しい環境をインストールする際に
terminal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
というエラーが発生.
別のQiita記事を参考に
$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
を実行したら解決しました.
ワークフロー
デフォルトでpython3環境を設定
何も考えずにpython
を実行したら3系pythonが実行されてほしいので,pyenvでグローバルにpython3.7.2(執筆時最新)を設定します.
$ pyenv install 3.7.2
$ pyenv global 3.7.2
$ which python
/Users/USER_NAME/.pyenv/shims/python
$ pyenv versions
system
* 3.7.2 (set by /Users/USER_NAME/.pyenv/version)
これで新しく作ったディレクトリの中では3系で実行されるようになりました.
pipenvで新しいプロジェクトの環境を作る
$ mkdir new_project
$ cd new_project/
$ pipenv install --python 3.4.3 # python3.4.3の環境を作る
$ pipenv install sklearn numpy scipy # パッケージのインストール
$ echo 'layout_pipenv' > .envrc && direnv allow # direnvの設定
これでcd
でnew_projectに移動した際に自動で仮想環境に入れます.
$ cd ..
direnv: unloading
$ cd new_project/
direnv: loading .envrc
direnv: export +PIPENV_ACTIVE +VIRTUAL_ENV ~PATH
$ which python
/Users/USER_NAME/.local/share/virtualenvs/new_project-T0Dp86UW/bin/python