元営業WEBエンジニアのアプリ開発日記

営業出身のWEB系エンジニアが気になったものから作ってはメモを残してくブログ

MacでPython, JupyterLabのローカル環境構築

概要

最近はPython使うことも多くなったきたので
ローカル環境構築したときのメモ残しとこう

手順

Pythonインストールのためのツールpyenvをインストール

pyenv使うと好きなPythonのバージョン指定可能

brew install pyenv

# インストールされていることの確認
pyenv --version

Python自体のインストール

pyenv使ってPythonのインストール

# インストールできる一覧の確認
$ pyenv install --list
Available versions:
  ...
  3.7.4
  ...

# 最新バージョンをインストール
$ pyenv install 3.7.4

# 使用するPythonバージョン指定
$ pyenv global 3.7.3
$ pyenv versions
  system
* 3.7.4 (set by /Users/s.uchiyama/.pyenv/version)

# pyenvを有効にするためのおまじない
$ cat << 'EOS' >> ~/.zshrc
# python
eval "$(pyenv init -)"
EOS

$ source ~/.zshrc

# Pythonバージョン確認
$ python --version
Python 3.7.4

プロジェクト用のPython環境作成

自身のローカルにPython環境はできたので
Python3.3以降標準搭載されているvenvでプロジェクト用のPython環境作成
これで違う人がこのプロジェクト参加した時も同じバージョンで開発できーる

# 環境作成
$ python -m venv venv
# 環境をアクティベイと!
$ source venv/bin/activate
(venv) $ python --version
Python 3.7.4
# 環境をディアクティベイと!
$ deactivate

個別の環境ができているか確認

上記の流れだとプロジェクト個別にPythonバージョン設定されたかわからないので、検証

# Python2系をインストール
$ pyenv install 2.7.16
# バージョンを確認
$ pyenv versions
  system
  2.7.16
* 3.7.4 (set by /Users/s.uchiyama/.pyenv/version)
# 2系を有効にする
$ pyenv global 2.7.16
# バージョンを確認
$ pyenv versions
  system
* 2.7.16 (set by /Users/s.uchiyama/.pyenv/version)
  3.7.4
$ python --version
Python 2.7.16

# 仮想環境でバージョンを確認
$ source venv/bin/activate
(venv) $ python --version
Python 3.7.4
# ちゃんとバージョン3系になってる!!!

ローカルはPython 2.7.16なのにプロジェクトではPython 3.7.4だからちゃんと動いてる!!
ローカルのPythonバージョン3系に戻しとこう

$ deactivate
$ pyenv global 3.7.4
$ python --version
Python 3.7.4

JupyterLabのインストール

# jupyter labのインストール
$ echo 'jupyterlab==1.2.4' > requirements.txt
$ pip install -r requirements.txt
# jupyter lab起動
$ jupyter lab
[I 15:51:31.470 LabApp] JupyterLab extension loaded from /Users/s.uchiyama/src/github.com/shintaro123/gcp-infra/etl/eda/venv/lib/python3.7/site-packages/jupyterlab

デフォルトブラウザが開いてjupyter labが表示された!

まとめ

Dockerでローカル環境作ろうかと思ったけど、まずは伝統的なお作法から入門しようということで、ググって出てきたやつでやってみた。

jupyterもanacondaとか環境構築ツール書いてあったけど
基本的にパッケージのたぐいは最小限だけ入れたい子なのでpipで入れやした。