MacにはWindowsのWinPythonのようなパッケージングされたポータブル版は無いようです。
Python3環境をMacで構築する方法を記載します。これは執筆時(2019/12/01)時点の情報です。
構築には以下を参考にさせていただきました(^^)
MacにはPythonが予めインストールされています。でもバージョンが古く、現在はPython3が多いですが、Python2がインストールされています。デフォルトでインストールされているPythonのバージョンは以下で確認できます。ターミナルで実行してください。
$ python --version
Python 2.7.16
私のMacでは、Python 2.7.16 でした。
MacにプリインストールされたPythonをいじると、他のシステムに影響が出たり再構築が面倒などのデメリットがあるらしいとのことで、仮想環境にPython3をインストールし、分離するのが良いらしいです。というわけで、pyenvを使って、Python2とは別にPython3をインストールしてみます。
Anacondaもインストールしてみます。
環境
MacBook Air late2018 macOS Catalina(10.15.1)
手順
Xcode Command Line Tools をインストール
Xcodeは大きいです。Mac book airは容量が少ないので、節約したいのでXcodeは入れずに、Xcode Command Line Toolsだけインストールします。
AppleのDeveloperサイト(以下)にアクセスします。
「開発」→「ダウンロード」→「MORE」と進み、検索ウィンドに「command line tool」と入力し、検索します。
リリースが新しい順に並べ替え、最新を使います(betaでないもの) ダウンロードにはAppleIDが必要です。 インストールにはちょっと時間がかかるので、気長に待ちましょう。
Command Line Tools for Xcode 11.2 をインストールしました。
Homebrewをインストール
Homebrewがインストールされていないことを確認します。
$ brew -v
-bash: brew: command not found
と出たので、未インストールを確認しました。
Homebrewのサイトにアクセスし、サイトに記載のコマンドをターミナルに貼り付けて実行します。
Homebrewがインストール完了したことを確認します。
$ brew -v
Homebrew 2.2.0
Homebrew/homebrew-core (git revision 54aa; last commit 2019-11-30)
Homebrewでpyenvをインストール
まずは、pyenvがインストールされていないことを確認します。
$ pyenv -v
-bash: pyenv: command not found
と出ましたので、未インストールであることが確認できました。
確認できたので、pyenvをインストールします。
$ brew install pyenv
先ほどと同じコマンドを実行し、インストールが完了したことを確認します。
$ pyenv -v
pyenv 1.2.15
次に、pyenvを設定します。
macOS Catalinaからはターミナルのデフォルトのシェルがbashではなく、zshになったようですが、私の環境はCatalinaですがbashでしたので以下のようにします。
以下をターミナルに入力します。何も起きないのですが、問題ないようです。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
pyenvでPython3をインストール
以下のコマンドで、インストール可能なPythonのバージョンを確認します。
$ pyenv install --list
確認した結果、執筆時点(2019/12/01)で安定版の最新が3.8.0だったので、3.8.0を入れてみます。(一応、Pythonのサイトでも3.8.0が安定版の最新であることを確認しました)
3.8.0をインストールします。
$ pyenv install 3.8.0
インストールにはちょっと時間がかかりますが、焦らず待ちます。
インストールが完了したら、Pythonのバージョンを確認してみます。
$ pyenv versions
system
3.8.0
この時点ではまだMacに元々インストールされているPython2(2.7.16)を使用することになっているので、3.8.0をデフォルトで使うように設定します。
$ pyenv global 3.8.0
変更されたか確認します。
$ python --version
Python 3.8.0
3.8.0をデフォルトで使用できるようになりました。
pyenvでAnacondaをインストール
IDEであるJupyter NotebookやSpyderを使いたいので、Anacondaをインストールします。
執筆時点(2019/12/01)で最新の2019.10をインストールします。
$ pyenv install anaconda3-2019.10
Python3のインストール時と同様に、Anaconda3-2019.10をデフォルトで使うように設定し、確認も行います。
$ pyenv global anaconda3-2019.10
$ pyenv versions
上記により、デフォルトのPythonのバージョンが変わってしまっていたら、再度以下を実行します。(Anacondaに同封されている?Pythonのバージョンに置き換わってしまったのかもしれません。Python3.7.4と表示されていました。)
$ pyenv global 3.8.0
$ python --version
Python 3.8.0
condaでAnacondaの仮想環境を作成
Pythonの仮想環境を作るにはvenvを使用しますが、Anacondaで仮想環境を作るにはcondaを使用します。
condaのバージョンを確認しようとしたらcondaが無いと言われました。
$ conda --version
pyenv: conda: command not found
The `conda' command exists in these Python versions:
anaconda3-2019.10
これは、pyenvでインストールしたが、globalにインストールしていないからなので以下を参考に設定します。
作業用のフォルダを作って、そこでpyenvを使ってAnacondaをインストールします。
$ pyenv local anaconda3-2019.10
$ conda --version
conda 4.7.12
今度は怒られませんでした。
一応アップデートしておきます。
$ conda update conda
なぜかPython3.8.0ではなく3.7.4(未解決です)
で、ここまでPython3.8.0で来たのですが、condaを入れたあとは、globalのPythonが3.7.4から変更できなくなってしまいました。私の技術不足です。
$ pyenv global 3.8.0
としても、$ python –version
とするとPython 3.7.4のままです。どうやら、上にも書きましたが、Anaconda同封の3.7.4となってしまったようです。
今回はPython3を導入することが目的ですので、ちょっと気持ち悪いですが3.7.4でも良いのでこのまま進めるようにします。
Python3.7.4の仮想環境として、py374という名前で構築してみます。
$ conda create --name py374 python=3.7.4
動作
仮想環境に入る
構築できたので、仮想環境に入ってみます。
py374を作る過程で以下の説明がでましたので、この通りやってみます。
# To activate this environment, use
#
# $ conda activate py374
#
# To deactivate an active environment, use
#
# $ conda deactivate
が、以下のようにエラーとなってしまいました。
$ conda activate py374
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
- bash
- fish
- tcsh
- xonsh
- zsh
- powershell
See 'conda init --help' for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.
conda ではなく source としました。
$ source activate py374
(py374) $
入れました。
でも、一度sourceでactivateしてから、deactivateすると、次にactivateする時はcondaでも入れます。初回condaでinitialが〜と出てたので、初回でなんか引っかかっているのかもしれません。
$ conda activate py374
(py374) $
仮想環境から出る
仮想環境から出る時は上記に習って同様に conda とすると、
$ conda deactivate py374
deactivate does not accept arguments
remainder_args: ['py374']
出れませんでした笑
source を使うと一応出れましたが、非推奨のようです。とりあえず出れたので良しとします。
$ source deactivate py374
DeprecationWarning: 'source deactivate' is deprecated. Use 'conda deactivate'.
py374を記載しなければ、condaでも出れました。これが良さそうですね。
$ conda deactivate
仮想環境内でいろいろ
仮想環境の一覧表示です。
$ conda info -e
# conda environments:
#
base * /Users/username/.pyenv/versions/anaconda3-2019.10
py374 /Users/username/.pyenv/versions/anaconda3-2019.10/envs/py374
py374に入った状態で、jupyter notebookを起動してみます。
(py374) $ jupyter notebook
py374に入った状態で、spyderを起動してみます。
(py374) $ spyder
起動できました。
仮想環境の削除
仮想環境py374を削除するには、以下を実行します。
$ conda remove -n py374 --all
また、Anaconda-Navigator がイントールされていましたので、Jupyter NotebookやSpyderを起動するにはこちらを使用しても良さそうです。
py374の仮想環境も選べました。
仮想環境へのライブラリのインストール
ライブラリのインストールはpy374に入った状態で、pipコマンドで可能です。たとえばグラフ描画のmatplotlibを入れる場合は以下です。
(py374) $ pip install matplotlib
他のライブラリをインストールする場合も同じようにできます。
長くなりましたが、以上です(^^)
シェルをbash→zshに変更したらcondaが通らなくなったけど解決(2020/08/10追記)
原因はパスが通ってなかったからなので、パスを通したら使えるようになりました(^^)
zshでもパスを記述します。
まず、以下のコマンドでbash時にどのようにパスを記述していたかを確認します。(テキストエディタが開きます)
$ open ~/.bash_profile
紫色枠で囲んだ、export PATH=”/Users/「あなたのユーザ名」/.pyenv/versions/anaconda3-2019.10/bin:$PATH”
を.zshrcファイルに記載します。
.zshrcファイルは不可視ファイルなので、ターミナルで以下を実行して可視化します。
$ defaults write com.apple.finder AppleShowAllFiles TRUE
$ killall Finder
すると、Finderで見えるようになります。
ファイルがある場所は「あなたのユーザ名」直下です。
もしファイルがない場合は、以下を実行してファイルを生成します。
$ touch .zshrc
以下を実行してファイルを開き、先程のパスを記載します。
% open ~/.zshrc
もともと.zshrcファイルに他の記載がある場合は、「# Customize to your needs…」の下に記載します。
記載したらファイルを保存して、ターミナルを再起動し、再度以下のようにconda activateを実行してみます。
$ conda activate py374
もし、condaをinitializeしろというエラーがでたら以下を実行し、ターミナルを再起動します。
$ conda init zsh
追記終わり(^^)