7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pyenv + pipenv + direnvでpython環境構築[macOS Mojave]

Last updated at Posted at 2019-04-04

概要

新品の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
7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?