M2 Macbook AirにanyenvとpyenvでAnacondaをインストールする
手持ちのM2 Macbook AirにAnacondaが必要となり、anyenvとpyenvでインストールしてみたので手順を残しておく。
anyenvのインストール
まずはHomebrewで様々な**envコマンドをまとめて管理する為のanyenvをインストールする。
$ brew install anyenv
anyenvがインストールされた事を確認。
$ anynev -v anyenv 1.1.5
インストール出来たらanyenv init
コマンドを実行し、デフォルトシェルの種類に応じたanyenvの設定コマンドを確認する。
$ anyenv init # Load anyenv automatically by adding # the following to ~/.config/fish/config.fish: status --is-interactive; and source (anyenv init -|psub)
anyenvはbash、zsh、ksh、fishをサポートしているので、それぞれのシェルに合わせたメッセージが出力されるのだが、自分の環境はfishを使っているので、上述のメッセージに従ってconfig.fish
に出力されたコマンドを追記してやる。
$ vi ~/.config/fish/config.fish 以下を追記 status --is-interactive; and source (anyenv init -|psub)
追記が済んだらシェルをリロード。
$ exec $SHELL -l
次に、**envコマンドをインストールする為のanyenv-install
プラグインを設定する。
$ anyenv install --init Manifest directory doesn't exist: /Users/heroween/.config/anyenv/anyenv-install Do you want to checkout https://github.com/anyenv/anyenv-install.git? [y/N]: y Cloning https://github.com/anyenv/anyenv-install.git master to /Users/heroween/.config/anyenv/anyenv-install... Cloning into '/Users/heroween/.config/anyenv/anyenv-install'... remote: Enumerating objects: 71, done. remote: Counting objects: 100% (14/14), done. remote: Compressing objects: 100% (13/13), done. remote: Total 71 (delta 4), reused 3 (delta 1), pack-reused 57 Receiving objects: 100% (71/71), 13.15 KiB | 6.58 MiB/s, done. Resolving deltas: 100% (11/11), done. Completed!
anyenv install -l
コマンドでインストール可能な**envコマンドのリストが表示されたらanyenvの設定は完了。
$ ~/.config anyenv install -l Renv crenv denv erlenv exenv goenv hsenv jenv jlenv kubectlenv luaenv nodenv phpenv plenv pyenv rbenv sbtenv scalaenv swiftenv tfenv
pyenvのインストール
anyenvの設定が完了したら、複数バージョンのPythonを共存可能にするpyenvをインストールする。
$ anyenv install pyenv /var/folders/0b/7w0c1g251msb55zpbzt6ls9r0000gn/T/pyenv.20221015230118.98707 ~ Cloning https://github.com/pyenv/pyenv.git master to pyenv... Cloning into 'pyenv'... remote: Enumerating objects: 22020, done. remote: Counting objects: 100% (88/88), done. remote: Compressing objects: 100% (57/57), done. remote: Total 22020 (delta 37), reused 69 (delta 24), pack-reused 21932 Receiving objects: 100% (22020/22020), 4.43 MiB | 990.00 KiB/s, done. Resolving deltas: 100% (14897/14897), done. ~ Install pyenv succeeded! Please reload your profile (exec $SHELL -l) or open a new session.
インストールが完了したらシェルをリロード。
$ exec $SHELL -l
pyenvがインストールされた事を確認。
$ pyenv --version pyenv 2.3.5-2-g03a5d653
pyenvの実体は以下のディレクトリにインストールされている。
$ pyenv root /Users/heroween/.anyenv/envs/pyenv
ここまでで、同一環境に複数バージョンのPythonを共存させる事が出来るようになったものの、同じバージョンの環境を複数構成するといった事は出来ない為、それを実現するpyenvのプラグインとなるpyenv-virtualenvもインストールする。
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
インストールが完了したら再びシェルをリロード。
$ exec $SHELL -l
pyenv-virtualenvのインストールを確認する。
$ pyenv virtualenv --version pyenv-virtualenv 1.1.5 (virtualenv unknown)
これでpyenvの設定は完了。
Anacondaをインストールする
pyenvを使って本来の目的となるAnacondaをインストールする。
pyenv install -l
コマンドを実行すると、インストール可能なPython2、Python3や、Anaconda、Miniconda(Anacondaのmininal版)等の各バージョンがリスト表示されるので、そこからインストールしたいAnacondaのバージョンを取得する。
$ pyenv install -l Available versions: 2.1.3 2.2.3 2.3.7 ~~~~~ 中略 ~~~~~ anaconda3-2020.11 anaconda3-2021.04 anaconda3-2021.05 anaconda3-2021.11 anaconda3-2022.05
執筆時の最新版となるanaconda3-2022.05
をインストールする場合、以下のコマンドを実行する(もっとも、anaconda3-2022.05
以前のバージョンはMacOSX-arm64に未対応なので、そもそもM2 Macbook Airにはインストール出来ないのだけども)。
$ pyenv install anaconda3-2022.05 Downloading Anaconda3-2022.05-MacOSX-arm64.sh... -> https://repo.anaconda.com/archive/Anaconda3-2022.05-MacOSX-arm64.sh Installing Anaconda3-2022.05-MacOSX-arm64... Installed Anaconda3-2022.05-MacOSX-arm64 to /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05
インストールバージョンを確認。
$ pyenv versions * system (set by /Users/heroween/.anyenv/envs/pyenv/version) anaconda3-2022.05
GlobalのPython環境をanaconda3-2022.05
に変更。
$ pyenv global anaconda3-2022.05 $ pyenv versions system * anaconda3-2022.05 (set by /Users/heroween/.anyenv/envs/pyenv/version)
conda
コマンドが機能する事を確認する。
$ conda -V conda 4.13.0 $ conda env list # conda environments: # base * /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05
次に、デフォルトシェルにAnacondaの初期化設定をしてやる。
$ conda init fish no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/condabin/conda no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/bin/conda no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/bin/conda-env no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/bin/activate no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/bin/deactivate no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/etc/profile.d/conda.sh no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/etc/fish/conf.d/conda.fish no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/shell/condabin/Conda.psm1 no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/shell/condabin/conda-hook.ps1 no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/lib/python3.9/site-packages/xontrib/conda.xsh no change /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/etc/profile.d/conda.csh modified /Users/heroween/.config/fish/config.fish ==> For changes to take effect, close and re-open your current shell. <==
すると、fishのconfig.fish
ファイルに以下の様なAnacondaの設定が追記され、シェルの起動時に自動でAnacondaがactivateされる様になる。
# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! eval /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/bin/conda "shell.fish" "hook" $argv | source # <<< conda initialize <<<
なお、conda init --all
を実行すると、Anacondaがサポートしている全てのシェル(bash、zsh、tcsh、fish、xonsh、powershell)に設定が追記されるので、複数シェルでまとめて設定したい場合は--all
オプションを使うと便利。
完了したらシェルをリロード。
$ exec $SHELL -l
これでAnacondaのインストールまでが完了となる。
Anacondaの仮想環境を作成してみる
pyenv-virtualenvを使ってAnacondaの仮想環境を作るには、以下のコマンドを実行する。
$ pyenv virtualenv anaconda3-2022.05 myenv Collecting package metadata (current_repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 4.13.0 latest version: 22.9.0 Please update conda by running $ conda update -n base -c defaults conda ## Package Plan ## environment location: /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/envs/myenv added / updated specs: - python The following NEW packages will be INSTALLED: bzip2 pkgs/main/osx-arm64::bzip2-1.0.8-h620ffc9_4 ca-certificates pkgs/main/osx-arm64::ca-certificates-2022.07.19-hca03da5_0 certifi pkgs/main/osx-arm64::certifi-2022.9.24-py310hca03da5_0 libcxx pkgs/main/osx-arm64::libcxx-14.0.6-h848a8c0_0 libffi pkgs/main/osx-arm64::libffi-3.4.2-hc377ac9_4 ncurses pkgs/main/osx-arm64::ncurses-6.3-h1a28f6b_3 openssl pkgs/main/osx-arm64::openssl-1.1.1q-h1a28f6b_0 pip pkgs/main/osx-arm64::pip-22.2.2-py310hca03da5_0 python pkgs/main/osx-arm64::python-3.10.6-hbdb9e5c_0 readline pkgs/main/osx-arm64::readline-8.1.2-h1a28f6b_1 setuptools pkgs/main/osx-arm64::setuptools-63.4.1-py310hca03da5_0 sqlite pkgs/main/osx-arm64::sqlite-3.39.3-h1058600_0 tk pkgs/main/osx-arm64::tk-8.6.12-hb8d0fd4_0 tzdata pkgs/main/noarch::tzdata-2022c-h04d1e81_0 wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0 xz pkgs/main/osx-arm64::xz-5.2.6-h1a28f6b_0 zlib pkgs/main/osx-arm64::zlib-1.2.12-h5a0b063_3 Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate myenv # # To deactivate an active environment, use # # $ conda deactivate Looking in links: /var/folders/0b/7w0c1g251msb55zpbzt6ls9r0000gn/T/tmp131_n1rs Requirement already satisfied: setuptools in /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/envs/myenv/lib/python3.10/site-packages (63.4.1) Requirement already satisfied: pip in /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/envs/myenv/lib/python3.10/site-packages (22.2.2)
pyenv virtualenv
コマンドを実行すると仮想環境が作成される訳だが、実行環境にconda
コマンドが存在している場合、内部的にはconda create
が使われる様になっている。
$ pyenv versions * system (set by /Users/heroween/.anyenv/envs/pyenv/version) anaconda3-2022.05 anaconda3-2022.05/envs/myenv myenv $ conda env list # conda environments: # base * /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05 myenv /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/envs/myenv
新しく作成したAnacondaの仮想環境へ切り替えるには、conda activate
コマンドを実行。
$ conda activate myenv $ conda env list # conda environments: # base /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05 myenv * /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/envs/myenv $ pyenv versions * system (set by /Users/heroween/.anyenv/envs/pyenv/version) anaconda3-2022.05 anaconda3-2022.05/envs/myenv myenv
あくまでAnaconda内における仮想環境の切り替えとなる為、pyenv側が切り替わることは無い。
pyenv側で切り替えるのであれば、一旦、conda deactivate
コマンドでAnacondaから抜けた後、pyenv activate
コマンドを実行する形となる。
$ conda deactivate $ pyenv activate myenv $ pyenv versions system anaconda3-2022.05 anaconda3-2022.05/envs/myenv * myenv (set by PYENV_VERSION environment variable) $ conda env list # conda environments: # base * /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05 myenv /Users/heroween/.anyenv/envs/pyenv/versions/anaconda3-2022.05/envs/myenv
なお、pyenvでインストールしたAnacondaと、そのAnacondaを元にpyenv virtualenv(conda create)で作成した仮想環境とでは、デフォルトでインストールされるパッケージ群が異なるので注意が必要(仮想環境では作成時に出力されるメッセージの通り、最低限のパッケージしかインストールしない)。