Help us understand the problem. What is going on with this article?

MacでのPython環境構築

真面目に開発環境を用意する場合はdockerを使うべきだけど、
手元でサクッと色々試すための環境も作りたい。
その上でも
・python自体のバージョンを切り替えて使いたい。(主にv3.6を使いたい)
・ライブラリを切り替えて使いたい。
という2つの目的を満たす形で環境を作りたい、という場合の手順メモです。

今回利用するツールの説明

homebrew
言わずと知れたmacのパッケージマネージャ
(ほぼデファクトスタンダードなものにもかかわらず、個人?が運用しているというのが、自分的には微妙、、なんだけど、他に良いものも見つからないので仕方ない。)

pyenv
python自体のバージョンを切り替えるためのツール

似た名前のものにpyvenvとは別物。pyvenvはdeprecatedで後述のvenvを使うように書かれている。

venv
python自体に組み込まれている仮想環境作成ツール
もともとvirtualenvという独立したツールだったが、python3.3から組み込まれた

まずはhomebrewを入れる

macにhomebrewがまだ入っていない場合、インストールする
https://brew.sh/index_ja にあるインストール方法でインストールします。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

pyenvをインストールする

python自体のバージョンを切り替えることができるツールであるpyenvをインストールする

brew install pyenv

インストールしたらパスを設定しておきます

bash_profileへの設定。初回は直接実行もしておく。
echo 'export PATH="$HOME/.pyenv/shims:$PATH"' >> ~/.bash_profile
export PATH="$HOME/.pyenv/shims:$PATH"

インストール後
pyenv install --list
で利用可能なpythonの一覧が表示されます。

macとpyenvでのzlibエラー対応

pyenvを利用しようとすると、zlibに関するエラーが発生するのでhttps://qiita.com/zreactor/items/c3fd04417e0d61af0afe
にかかれているように以下のコマンドで対応する

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

利用したいpythonバージョンをインストール&切り替える(3.6.8を利用する場合)

pyenv install 3.6.8
pyenv global 3.6.8

venvでの環境切り替え

python -m venv [環境名]

で[環境名]に以下のようにディレクトリが作成されます

[環境名]ディレクトリ以下の構成(抜粋)
bin/
  activate :この環境を利用するためのスクリプト
  pip :この環境用のpip
  python :pythonの実態へのリンク
include/
lib/ :この環境のpipでインストールしたライブラリはこの下に置かれます。
pyenv.cfg

ライブラリもこの下にインストールされるので、他の環境を汚さずに操作できるようになります。

source [環境名]/bin/activate

でこの環境の利用モードになります。

ここで

python --version

とすると、venvで環境作成したときのバージョンになります。

なお、上記環境利用状態から出る場合は以下のコマンドです。

deactivate

ガッツリ環境を用意する場合はdockerを使いましょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away