Mac tips/Python
pyenv
pythonの実行環境を制御するコマンド.システム全体 (global) に使用するバージョンと,個別のディレクトリ (local) に使用するバージョンを設定・変更することができる.
Install by brew
$ brew install pyenv-virtualenv
Install by git
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
Configure
PATHを設定するために,~/.bash_profile or ~/.zprofile に以下を追加.
export PYENV_ROOT=${HOME}/.pyenv if [ -d "${PYENV_ROOT}" ]; then eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" fi
使い方
インストールがうまく行ったら,利用可能なバージョンのリストを表示.
$ pyenv install -l
特定のバージョンの Python をインストール
以下のコマンドで特定のバージョンをインストール.
$ pyenv install 3.6.3
Python バージョンを表示
現在選択されているバージョンを表示
$ pyenv version
現在インストールされているバージョンのリストを表示
$ pyenv versions
使用するPythonバージョンを指定
システム全体で使用するバージョンの変更
$ pyenv global 3.6.3
特定のディレクトリで使用するバージョンを変更
$ mkdir python2 $ cd python2 $ pyenv local 2.7.10
tkinter
Install
まず、前提になっている brew で tcl-tk をインストールする。
$ brew install tcl-tk
次に、pyenvを brewでインストールした場合は /usr/local/Cellar/pyenv/VERSION/plugins/python-build/bin/python-build を pyenv を git でインストールした場合は ~/.pyenv/plugins/python-build/bin/python-build を次のように編集。
--- old/plugins/python-build/bin/python-build +++ new/plugins/python-build/bin/python-build @@ -779,7 +779,7 @@ build_package_standard_build() { export CC=clang fi ${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \ - $CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1 + $CONFIGURE_OPTS --with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1 ) >&4 2>&1 { "$MAKE" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} "${!PACKAGE_MAKE_OPTS_ARRAY}"
つまり、$CONFIGURE_OPTS で始まる1行に --with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' を加える。 ただし、M1 Macの場合は、/usr/local/opt の部分が /opt/homebrew/opt に置き換わる。
この設定をした上で、pyenv で python 自体を再インストールする。
$ pip freeze > requirements.txt. # 現在インストールされているパッケージを覚えておく $ pyenv versions system 3.8.11 * 3.9.6 (set by /Users/YOU/.pyenv/version) $ pyenv uninstall 3.9.6 $ pyenv install 3.9.6 $ pip install -r requirements.txt # 消えちゃったパッケージをインストールし直す
これを、使用するすべての python version で繰り返す。
matplotlib
グラフを表示するライブラリ.
Install
$ pip install matplotlib
グラフ描画の例
import math import numpy as np from matplotlib import pyplot x = np.linspace(0, 2 * math.pi, 100) y = np.sin(x) pyplot.plot(x, y) pyplot.show()
もし以下のようなエラーが出たら・・・
from matplotlib.backends import _macosx RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.
matplotlibrc を編集して,
backend: macosx
とある行を,
backend: Tkagg
に書き換える.
matplotlibrc の在りかは,次のコマンドで確認できる.
$ python -c "import matplotlib;print(matplotlib.matplotlib_fname())"