macOS の Python の環境について (システム, MacPorts, pyenv, pyenv-virtualenv)

はじめに

MacPorts を使って OpenModelica をインストールしたので、フリーソフトの管理ツールも MacPorts にします。Python に関しては、

  • システム(masOS付属)の Python
  • MacPorts でインストールされる Python
  • Anaconda などのディストリビューションの環境
  • 特定の開発プロジェクトなどで使用する環境

などを互いに干渉しないように使い分ける必要があります。どのように考え、どう切り替えたらいいかについてまとめました。自分用の忘備録です。

 

システム(macOS付属) の Python

macOS に最初から付属している Python です。これらの Python は、macOS のソフトウェア・アップデートで管理され、macOS のシステムが使用するのでなるべく環境を改変しないようにしようと思います。

ターミナルを起動して、python または python3 と入力すると起動します。macOS Catalina の場合、それぞれ、

となります。Python 2.7.16 と Python 3.7.3 が入っています。

 

MacPortsのPython

MacPorts を使ってインストールされた Python です。同じくMacPorts を使ってインストールされたソフトウェアに Python インターフェースがある場合は、この環境を使用します。通常は none の状態にしてシステムの Python を使う設定にします。必要に応じて一時的に使うように切り替えることにします。

 

MacPorts で管理できるインストール済み Python を確認する

port select python と入力すると、MacPorts を使って管理できるインストール済みの Python 環境がわかります。(active) が付いている Python が選択されています。デフォルトは none でシステムの Python 環境を使う状態です。

MacPorts の Python 環境の切り替える

python36 を使用したいときは、次の様に入力します。

確認します。

python のバージョン確認して、起動してみます。

exit() または Ctrl-D で終了します。

同様に、以下の様に入力することによってシステムの Python 環境に戻せます。

Python 関連のパッケージの確認してインストールする

https://ports.macports.org で Python を検索するとインストール可能な Python 関連のパッケージがわかります。パッケージを確認して、例えば python35 をインストールする場合は以下の様に入力します。

確認します。

同様に、以下の様にアンインストールします。

 

port select コマンドで切り替え可能なソフトウェア

Python 以外のソフトウェアも port select コマンドでバージョンの切り替えが可能です。対象となるソフトウェアは以下の様にして確認できます。表示はインストール済みのソフトウェアに依存します。

 

pyenv の環境

pyenv は、バージョンの異なる Python や Anaconda などのディストリビューションの利用環境を簡単にインストールすることができます。pyenv global コマンドは、全体で使用する環境を設定します。pyenv local コマンド を使用すると、Python のバージョンやディストリビューションを、ディレクトリ毎に割り当てて切り替えることができます。

通常は、pyenv global コマンドで system (システムのPython) を設定し、ディレクトリ移動で環境を切り替えたいと思います。pyenv でインストールした環境は、主に、Anaconda などで Jupyter Notebook などを利用したいときに使用します。MacPorts には pyenv のパッケージが無いので、https://github.com/pyenv/pyenv からインストールします。

 

pyenv をインストールする

まず、git で pyenv を取得します。

~/.zshrc に以下を記述します。

本家やいろいろなサイトを参考にすると、この設定は ~/.zshenv に記述するように書かれています。比較的最近( 2019年年末頃) MacPorts をインストールすると ~/.zprofile に次の様な設定が追加されています。

MacPorts の設定より pyenv の設定を優先させるために、~/.zprofile より後に読み込まれる ~/.zshrc に上記設定を書き込むことにしました。

ログインスクリプトを読み込むので一応再ログインして環境変数 PATH の設定を確認します。

pyenv > Macports > システムの優先順位で設定されています。

 

いろいろなバージョンのPython や Anaconda などをインストールする

ターミナルを起動して、

と入力すると、インストール可能な Python のバージョンや Anaconda のディストリビューションなどが表示されます。anaconda3-2019.10 をインストールしてみます。以下の様に入力します。

以下の様にして、インストールされている環境を確認します。

出力された1行目の system は、システムの Python または MacPorts の Python です。2行目の anaconda3-2019.10 が今インストールした環境です。行頭の * が現在アクティブな環境です。

python 3.7.0 をインストールしてみます。

「コマンド brew が見つかりません」が出ています。調べてみると brew –prefix “${openssl}” という Homebrew のコマンドを使用しています。 Homebrew を使って openssl をインストールしていたらそれを使うようです。/usr/bin/openssl にシステムの openssl がありMacPorts の openssl と readline もインストール済みですが、これらを使わずソースコードから .pyenv 内のバージョン毎にディレクトリにインストールしているようです。コンパイルに少し時間がかかりますがエラーでは無いようです。以下のように確認するとインストールは成功しています。後述の pyenv-virtualenv のところで動作確認もできました。

現状では

  • Python 3.8.0
  • Python 3.8.1

はインストールに失敗しました。

 

Python の環境を切り替える

切り替え前の Python のバージョンを確認します。

pyenv global コマンドで環境を anaconda3-2019.10 に切り替えます。

pyenv versions でアクティブな環境を確認します。

python のバージョンを確認します。

exit() または Ctrl-D を入力して Python を終了します。

同様に、pyenv global コマンドで system の環境に戻します。

 

ディレクトリ移動で Python の環境を切り変える

任意のディレクトリを作成して、そのディレクトリに移動したときに自動的に Python の環境が切り替わるようにします。

ディレクトリ名を ana3_201910 とし、Python環境を anaconda3-2019.10 とします。pyenv local コマンドを使用します。

上の様に、pyenv local コマンドを実行すると、プロンプトにpythonの環境名 (anaconda3_2019.10) が付きます。ディレクトリの外では次の様にシステムの環境になります。

ディレクトリの中では次の様になります。

このような環境を作っておくと、

ですぐに Anaconda の環境で Jupyter Notebook が使えます。

 

参考

 

pyenv-virtualenv の環境

pyenv でインストールした Python の環境をベースにして仮想環境をつくり、そこにいろいろなパッケージをインストールして、独自の環境を作りたい場合に使用します。この環境も pyenv local を使用してディレクトリ移動で切り替えたいと思います。

pyenv-virtualenv は pyenv のプラグインで、virtualenv と conda の環境を管理する役割を演じます。

pyenv-virtualenv をインストールする

まず、git で pyenv-virtua lenv を取得します。

~/.zshrc を次に様に改変します。

有効にするためターミナルを再起動します。

 

仮想環境を作成する

pyenv virtualenv コマンドで、先ほどインストールした Python 3.7.0 を使う仮想環境 p370env を作成します。

 

ディレクトリ移動で仮想環境を切り替える

任意のディレクトリを作成し、仮想環境と関連づけます。ディレクトリ名を p370prj とします。pyenv local コマンドを使います。

プロンプトの先頭に (環境名) がつきます。このディレクトリから抜けると pyenv global コマンドで設定されている環境に戻ります。

再びディレクトリ p370prj に移動して、バージョンを確認します。

 

仮想環境を使ってみる

ターミナルでディレクトリを p37prj に移動して、仮想環境に pip install コマンドでいろいろインストールします。

python を起動してグラフを描いてみます。[python入門]ライブラリ Matplotlib の基本的な使い方 を参考にしました。

仮想環境で作成したグラフ

インストールしたバッケージを確認して保存する

仮想環境に pip install コマンドでインストールしたパッケージは pip freeze コマンドで確認し、ファイルに保存することができます。

再びこれらのパッケージをインストールするときは以下のようにします。

 

Python や仮想環境を削除する

作成した仮想環境 p370env とPython 3.7.0 を削除します。pyenv uninstall コマンドを使用します。

 

参考

 

以上。

スポンサーリンク

macOS の Python の環境について (システム, MacPorts, pyenv, pyenv-virtualenv)” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です