2023年1月に購入したM2 macでのpy環境構築

homebrewをインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

パスをzshで通す。

echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/xxxx/.zprofile       
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/omae3/.zprofile                     
eval "$(/opt/homebrew/bin/brew shellenv)"
source ~/.zprofile # 設定をロード

以下でバージョンが出ればok

brew -v
brew install wget # よく使うのでinst.

pyenv外のpyをインストール:
brew install python3
python3 –version # なんか数字が出れば成功

pyenvのインストール:
brew install pyenv # pyenvインストール
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.zshrc # パス
echo ‘export PATH=”$PYENV_ROOT/shims:$PATH”‘ >> ~/.zshrc # パス
echo -e ‘if command -v pyenv 1>/dev/null 2>&1; then\n eval “$(pyenv init -)”\nfi’ >> ~/.zshrc # パス
source ~/.zshrc # 有効化
pyenv install –list # pyのインストール可能なバージョンを見る
pyenv install 3.9.5 # pyのインストール(3.8.9など古いとエラーがでる模様)
pyenv global 3.9.5 # 使用バージョンを変更(初期はenv外のpy)
pyenv versions # 3.9.5に*があれば成功
python3 –version # 3.9.5と出れば成功。出ない場合 -> ちゃんとenvのpathの通した?

jupyterとpyenvの連携:
エディタでpyのパスを見て、jup上で3.9.5が出ればok(memo: 前はpyenvと連携がうまくいかなかったが何もしなくても自動でバージョンが変わるようになった。非常に良い。3.9.7の3.9.5の入れ替えでチェック済み)
pip3 install jupyter
Jupyter notebook
import sys # jup.上で
sys.path # jup.上で

インストール:
pip3 install numpy
pip3 install numpy(科学技術用のデータ利用)
pip3 install scikit-learn(機械学習の関数多し)
pip3 install matplotlib(グラフの描画)
pip3 install scipy(統計の関数多し)
pip3 install pydotplus (決定木可視化)
brew install graphviz(決定木の可視化のために)
brew install ffmpeg(matplotの動画化に必要)
pip3 install graphviz(有向無向グラフ)
pip3 install semopy(共分散構造分析)
pip3 install opencv-python
pip3 install tqdm

以下はエラーが出たが、macではやらないからとりあえず放置
pip3 install mecab-python3
pip3 install tensorflow


ここから旧資料(〜2019)

インストール

HomeBrewのインストール:
MacOSXに対し、色々なアプリケーションをインストールするコマンドを使用できるようになります。ターミナルから以下のコマンドを入力することでインストールされます。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

もしこれでbrewコマンドが使えるようにならない場合は、以下のコマンドを打つ。

xcode-select --install



wgetのインストール:
Webからファイルを取得するコマンドを使用できるようになります。インストールは、ターミナルから以下のコマンドを打てばokです。
brew install wget

python3のインストール:
brew install python3

統計・機械学習パッケージのインストール:
pip3とは、python3環境にパッケージを入れるコマンドです。以下の通り入力してください。


エディタ:
pip3 install jupyter(エディタ)

機械学習・統計学周り:
pip3 install numpy(科学技術用のデータ利用)
pip3 install scikit-learn(機械学習の関数多し)
pip3 install matplotlib(グラフの描画)
pip3 install scipy(統計の関数多し)
pip3 install pydotplus (決定木可視化)
brew install graphviz(決定木の可視化のために)
brew install ffmpeg(matplotの動画化に必要)
pip3 install graphviz(有向無向グラフ)
pip3 install semopy(共分散構造分析)

深層学習:
pip3 install tensorflow
pip3 install plaidml-keras plaidbench
-> memo: これでkerasもはいる。なお、必ず、plaidml-kerasを、tensorflowよりも前にインストールすること。バックエンドが書き換えられなくなります。というか?tensorflowのインストールはいらない?未検証。
以下のバージョンを推奨します。
tensorflow: 2.3.0
plaidml-keras: 0.7.0 

自然言語処理:
pip3 install mecab-python3(形態素解析)
pip3 install gensim(word2vec)

画像処理:
pip3 install opencv-python

スクレイピングしたい場合:
pip3 install beautifulsoup4(スクレイピングライブラリ)
pip3 install requests(web接続ライブラリ)

Webアプリ開発:
pip3 install bottle(pythonでサーバを立てる)
pip3 install jinja2(python+htmlテンプレート)

バージョン表示:
pip3 list(全部表示)
pip3 list -o (現バージョンと最新バージョンの表示)
pip3 show xxx (xxxのバージョンを表示)

バージョン指定インストール:
pip3 install xxx==n.n.n(xxxがインポート名で、nがバージョン)

アップグレード:
pip3 install --upgrade xxx

アンインストール:
pip3 uninstall xxx (xxxにパッケージ指定)


バージョン備忘録:
このページの実行環境のバージョンを、残しておきます。
python3: 3.7.1 (python3 –version, ter)
jupyter: 4.4.0 (jupyter –ver, ter)
pip3: 18.1 (pip3 –version, ter)
numpy: 1.15.4 (np.__version__, py)
sklearn: 0.20.1 (sk.__version__, py)
spicy: 1.1.0 (sp.__version__, py)
matplotlib: 3.0.2 (mp.__version__, py)


エディタ: Jupyterについて

起動方法:
まず、ターミナルのコマンドで、作業したいディレクトリまで移動してください。
例えば、DesktopにあるPyディレクトリで作業したい場合には、

cd Desktop/Py

で移動します。移動後、

jupyter notebook

とターミナルでコマンドを打つとJupyter notebookが起動します。
その後、右上のタブから「New->Python3」と選択すればエディタが開きます。
上の方にあるUntitledをクリックし、ファイル名をつければ完了です。

マークダウンとコーディング:
Jupyterには、マークダウン、コーディング、2つのモードがあります。エディタの左側に「In[]」とついている場合は、コーディングです。ついていない場合はマークダウンとなります。コーディングモードでは、プログラムを記述します。マークダウンではプログラムの説明などを書く文字を記述します。マークダウンで説明を書き、その下に、コーディングする、というのが一般的な使い方になります。

jupyterショートカットコマンド:
たくさんあるので、最低限使うものだけ記載します。mac OS Xの場合です。

esc + y: コーディングモードにチェンジ
esc + m: マークダウンモードにチェンジ
esc + a: 現在のセルの上にセルを追加
esc + b: 現在のセルの下にセルを追加
esc + dd: 該当セルを削除(dを2回連打)
esc + z: 元に戻す(セルを誤って消したときなど)
sift + enter: そのセルを実行
command + s: 上書き保存

その他便利技:
複数行選択 + tab: 一括インデント
複数行選択 + shift + tab: 一括インデント (戻す)
複数行選択 + command + /: 一括コメントアウト(もう一回で戻す)

特殊な保存:
「file -> download as」を選択すると、「.py」や「.html」で保存することができます。作ったコードをどこかに実装したい場合には「.py」、webコンテンツとして公開したい場合には「.html」で保存するといいと思います。なお、「.html」で保存すると、静的なコンテンツになるので、実行などはできなくなります。

ターミナルのJupyterをシャットダウン:
Jupyterはサーバとして起動されています。ターミナルでサーバを停止するには、「control+c」を押してください。「command+c」ではないので注意すること。


Pyenv環境設定

意図せぬ謎のバージョンアップでpythonが動かなくなってしまうのを防ぐ方法

インストール:

brew install pyenv

インストール可能なバージョンの一覧:

pyenv install --list

指定バージョンのインストール(例えば、python 3.7.1):
(複数インストールもok)

pyenv install 3.7.1

インストール済みバージョンの取得:

pyenv versions

使うバージョンの変更:
 → 1行目は使うバージョンの設定で、2, 3行目はそのバージョンになっているかチェックするコマンド。一致しなければ、トラブルシューティングへ。

pyenv global 3.7.1
python --version
pip3 --version

そのバージョンでjupyterなどをインストール:
 →上で設定したバージョンでのみ使えるようになる。

pip3 install jupyter
pip3 install numpy
...

インストールしたimportファイルがあるかチェック:
 →例えば、python 3.7.1の場合

cd /Users/xxxx/.pyenv/versions/3.7.1/lib/python3.7/site-packages

Jupyterにカーネル追加:
 →例えば、python 3.7.1の場合

python -m ipykernel install --user --name=python3.7.1 --display-name=python3.7.1

これで、ファイルを開くときに、カーネルを選択できる。


Pyenvトラブルシューティング

pyenv global と python のバージョンが合わない:
ターミナルで以下をたたく。

eval "$(pyenv init -)"

jupyterで3.7.1カーネルを選んでいるのに、3.8.1のインポートファイルが使われてしまう。
jupyterで、

import sys
sys.path

これで、対象のバージョンになっていればok。例えば、カーネルで3.7.1と設定していれば、ここでも3.7.1がかえってくる。もし意図しないバージョンが出てくるなら、pip3で入れたそのバージョンのライブラリが使えなくなる。この場合、ターミナルで、

jupyter kernelspec list

と打ち込み、対象カーネルのディレクトリに移動し、vimで.jsonを開く。ここに、対象バージョンのディレクトリが設定されているかチェックする。カーネルが3.6.1なのに、jsonでは3.7.1になっているなどがあれば、修正する。おかしいものは、以下のコマンドで削除する。

jupyter kernelspec uninstall pythonx.x.x

memo:
しばらくは3.7.1でやる予定(2020.8)


PYTHONPATHの永続的な指定

python3
import sys
sys.path

を入れると、pythonがloadしてくれるパス一覧が表示される。ただ、この中に読んでほしいディレクトリが存在しない場合がある。この場合は、ターミナルで、

export PYTHONPATH="/xxx/xxx/xxx"

と指定すれば良い。すると、exportを入力しても、sys.pathでも、このディレクトるが表示される。でも、これだと毎回入力しなければならない。exportコマンドを永続的にしたい場合は、

vim ~/.bash_profile

と打ち込む。「~/」はhomeディレクトリを意味する。homeディレクトリは、exportコマンドで見ると、どこに指定されているかチェックできる。homeディレクトリにある「.bash_profile」は、環境変数を永続的に設定できる場所を意味する。「.bash_profile」は隠しファイルなので、lsコマンドでは見れず、「ls -a」コマンドを利用する必要がある。この中に、

export PYTHONPATH="/xxx/xxx/xxx"

を書き込んで、保存すればok。ターミナルを起動するたびに、この設定が反映される。ターミナルを閉じて、もう一度開き、exportコマンドか、sys.pathで指定したディレクトリが反映されているか、チェックすると良い。homeディレクトリに.bash_profileがない場合は、自分で作っちゃってok


Pyenv環境設定(zsc環境, M1チップ)

メモ書き。3.7.9, 3.9.1しか入らない?

brew install pyenv
pyenv install 3.7.9
pyenv install 3.9.1

→ M1チップだとうまくいかない?