Python
fish
pyenv
anyenv
venv

Macでanyenvをつかってpython環境構築(bash、fish対応)

これはcloudpack あら便利カレンダー 2018の記事です。

概要

brew install python3 というのが手っ取り早いわけですが、今後を見越して、バージョン切り替えができる環境にします。python2.xがそう簡単に廃れると思わないほうがよいです。きっと。たぶん。

brew なにそれ?という方は下記を参考ください。

5分でできるMacBook Proに最低限の開発環境構築
https://qiita.com/kai_kou/items/3107e0a056c7a1b569cd

手順

  • シェル: fish
  • *bashの手順も併記してます。

fishはいいぞぉ

fish-shell でシェルの海をスイスイ泳いでみた
https://nulab-inc.com/ja/blog/backlog/fish-shell-tutorial/

作業前の状態

fish、bash共通
# macOS Sierra
> sw_vers
ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G1510

# Macには2.7が最初からインストールされている
> python --version
Python 2.7.10
> which python
/usr/bin/python

# まだ入ってない
> anyenv
fish: Unknown command 'anyenv'
> pyenv
fish: Unknown command 'pyenv'

anyenvのインストール

Mac に anyenv でサクッとマルチ開発環境構築
https://qiita.com/yutackall/items/6c48cf56317d8501f6df

anyenv とは、ざっくり言うと、rbenvとか、nbenvとか複数バージョンをインストールできる **env系をまとめて管理できるツール。

です。個別にインストールするとあとで泣くことになるので、anyenvオススメです。

fish
> echo 'set -x PATH $HOME/.anyenv/bin $PATH' >> ~/.config/fish/config.fish

# fishだとevalがハマりどころ(1敗)
> echo 'eval (anyenv init - | source)' >> ~/.config/fish/config.fish
# シェルの再起動(exec $SHELL -l じゃむり)
> exec fish -l
bash
> git clone https://github.com/riywo/anyenv ~/.anyenv
> echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
> echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
> exec $SHELL -l

これでanyanvが使えるようになるはず。

fish、bash共通
> anyenv
anyenv
Usage: anyenv <command> [<args>]
()
anyenv versions

はい。

プラグインも入れておきます。

anyenvの*envたちを一括でアップデートする
https://qiita.com/sawadashota/items/825002d84088c0129c4b

fish、bash共通
> git clone https://github.com/znz/anyenv-update.git "$(anyenv root)/plugins/anyenv-update"

# fishの場合「$」があると
# 「fish: $(...) is not supported.」って怒られるのでこっち。

> git clone https://github.com/znz/anyenv-update.git (anyenv root)/plugins/anyenv-update

まだなにも*envをいれてないけど動作確認

fish、bash共通
> anyenv update
Updating 'anyenv'...
Updating 'anyenv/anyenv-update'...

はい。

pyenvのインストール

fish、bash共通
# 初回はenvsフォルダがないって怒られるので
> mkdir ~/.anyenv/envs

> anyenv install pyenv
Install pyenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.

# シェルの再起動: bash
> exec $SHELL -l

# シェルの再起動: fish
> exec fish -l

これでpyenvがインストールされたはず。

fish、bash共通
> pyenv
pyenv 1.2.6

はい。

Pythonのインストール

お好きなバージョンのpythonをインストールしましょう!

fish、bash共通
# インストール可能なバージョンを確認
> pyenv install -l
Available versions:
  2.1.3
  2.2.3
  (たくさんでてくる)

# 指定のバージョンをインストール
> pyenv install 3.6.6
()
Installed Python-3.6.6 to ~/.anyenv/envs/pyenv/versions/3.6.6

> pyenv versions
* system (set by ~/.anyenv/envs/pyenv/version)
  3.6.6

> pyenv local 3.6.6
> python --version
Python 3.6.6

はい。

仮想環境を作って入る

仮想環境はAnacondaを使うのもありなのですが、Python 3.3からvirtualenvが標準機能として組み込まれたようなので、venv+pipもあり。お好みで。

fish、bash共通
> mkdir ~/hoge
> cd ~/hoge
> python -m venv hoge
fish
# fish用のactivateがある!
> . hoge/bin/activate.fish
bash
> . hoge/bin/activate
fish、bash共通
> . hoge/bin/activate
> which pip
~/hoge/hoge/bin/pip
> deactivate

はい。

それでは、よきPython開発ライフを^^

参考

fish-shell でシェルの海をスイスイ泳いでみた
https://nulab-inc.com/ja/blog/backlog/fish-shell-tutorial/

riywo/anyenv
https://github.com/riywo/anyenv

Mac に anyenv でサクッとマルチ開発環境構築
https://qiita.com/yutackall/items/6c48cf56317d8501f6df

anyenvの*envたちを一括でアップデートする
https://qiita.com/sawadashota/items/825002d84088c0129c4b

fish shell の時に プロセスを起動し直す
http://hotoolong.hatenablog.com/entry/2018/05/07/194938

fishでのevalの設定方法
https://ema-hiro.hatenablog.com/entry/20170523/1495519890

venv: Python 仮想環境管理
https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e

Anaconda で Python 環境をインストールする
https://qiita.com/t2y/items/2a3eb58103e85d8064b6

activate.fish $(...) is not supported. In fish, please use '(.env)'. #1030
https://github.com/pypa/virtualenv/issues/1030