macOSに構築したPython環境を維持管理する(pyenv+Anaconda)
macOSに構築したPythonの開発環境を維持管理します。なお、この記事は、以下記事の続きです。
要件
- Homebrewでインストールしたソフトウェアについて、最新の状態を保つこと
- 作成したノートブック等が、バージョン管理されている状態を保つこと
- 必要に応じ、仮想環境やパッケージの追加、更新、削除を行うこと
- 他の構成に切り替える際に、Anaconda、pyenvをきれいに削除すること
構成
- macOS High Sierra
- Homebrew
- pyenv
- Anaconda
- TensorFlow / Keras
概要
以下について記載します。
- Homebrewの更新
- Gitを使ったバージョン管理の実施
- 仮想環境の追加
- パッケージの追加
- パッケージの更新
- パッケージの削除
- 仮想環境の削除
- Anacondaの削除
- pyenvの削除
注意事項
注意事項
- コマンド内に
<作成したワークスペース>
等の記載がある場合、各自の環境に合わせて読み替えて実行してください。冗長となるので、特に見落としそうな箇所を除けば、但し書きを書いていません。
pyenv versions
python -V
cd <作成したワークスペース>
pyenv versions
python -V
pyenv local anaconda<バージョン>
pyenv versions
python -V
- コマンドは、一行ずつ実行してください。
- 何かをインストール、設定したはずなのに、
-bash: hoge: command not found
と言って怒られるときは、コマンドexec $SHELL -l
で、シェルを再起動させると大体うまくいきます。
参考サイト
項目1. Homebrewの更新
目的
- Homebrew、Homebrew-Cask自体を最新化する
- Homebrew、Homebrew-Caskでインストールしたソフトウェアを最新化する
- Homebrew、Homebrew-Caskのキャッシュを削除する
やること
-
Homebrew
-
brew
できる状態であることの確認 - Homebrew自体の更新
- formulaの更新
- 古いcellarの更新
- 古いcellarとダウンロードキャッシュの削除
-
-
Homebrew-Cask
- Homebrew-Cask自体の更新
- 最新のCaskのプルダウン
- 古いCaskの更新
- 古いキャッシュの削除
手順
- ターミナルを起動し、以下コマンドを実行する。
brew doctor
brew update
brew upgrade
brew cleanup
brew cask upgrade
brew cask cleanup —outdated
補足
-
brew update
時に、Homebrew-Cask自体の更新、最新のCaskのプルダウンも行われます。 -
brew upgrade
、brew cleanup
の代わりに、brew upgrade --cleanup
を実行しても構いません。 -
brew cask install
でインストールしたソフトウェアの内、例えばGoogle Chromeのように、ソフトウェア自体にアップグレード機能が付いているものは、brew cask upgrade
ではアップグレードされません。各ソフトウェアの機能を使ってアップグレードしてください。 - Homebrewの用語(brew, celler, formula...)については、参考サイトの五番目がわかりやすいです。(ちなみに、caskは樽を意味します。)
参考サイト
- brew(1) – The missing package manager for macOS
- How to Use Homebrew-Cask
- homebrewの更新はbrew upgrade --cleanupだけでよくなっている
- Homebrewでcask upgradeが実装されていた
- homebrewとは何者か。仕組みについて調べてみた
項目2. Gitを使ったバージョン管理の実施
目的
- 作成したノートブック等が、バージョン管理されている状態を保つ
やること
- GitHubのアカウントの作成
- Gitがインストールされていることの確認
- GitのGUIクライアントのインストール
- バージョン管理の実施
手順
- GitHubにて、アカウントを作成する。
- ターミナルより、コマンド
git --version
を実行し、gitがインストールされていることを確認する。 - GitのGUIクライアント一覧を確認し、自分好みのクライアントを見つける。ここでは、GitHub公式、かつ、初心者向けの「GitHub Desktop」を選んだものとする。
- ターミナルを起動し、コマンド
brew cask install github
を実行する。 - GitHubのWebメニュー(サインインが必要)、および、インストールされた「GitHub Desktop」を用いて、随時、バージョン管理(リモートリポジトリの作成、クローン、コミット、プッシュ)を実施する。
補足
- 環境構築時、Command Line Toolsをインストールした際に、Gitがインストールされているはずです。
- 中上級者には、動作の早いらしい「GitUp」が良いかもしれません。コマンド
brew cask install gitup
でインストールできます。 - Gitの仕組みについては、参考サイトの二番目がすごくわかりやすいと思います。
- コミットメッセージに迷う(間違った)、あるいは、コミットの頻度に迷う場合は、参考サイトの三番目以降が参考になります。
参考サイト
- [macOS向け] gitのクライアントはGitUpがいいぞ。
- まずはGitの仕組みを理解することから
- Gitのコミットメッセージの書き方
- Gitのコミットログは過去形ではなく現在形(=命令形)で
- 提言: コミットメッセージの一行目には要求仕様を書け
- Git 作業における commit と push の頻度について
- GitHubに投稿したcommit messageを修正するには
- viコマンド集
- 現在のブランチ名を取得するコマンド
項目3. 仮想環境の追加
目的
- 仮想環境を追加する
やること
- 仮想環境の作成
- 仮想環境をJupyter Notebookのカーネルとして追加
手順
-
ターミナルを起動し、ワークスペースに移動後、以下いずれかのコマンドを実行する。
- 既存環境をクローンする場合は、
conda create -n <クローン先環境名> --clone <クローン元環境名>
- 新規に環境を作成する場合は、
conda create -n <仮想環境名> python anaconda
- 既存環境をクローンする場合は、
-
ターミナルを起動し、以下コマンドを実行する。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
jupyter kernelspec list
ipython kernel install --user --name=<仮想環境名> --display-name=<Jupyter Notebook上での表示名>
jupyter kernelspec list
conda deactivate
補足
- 既存環境をクローンする場合、クローン元環境と同じバージョンのパッケージがインストールされます。
- 新規に環境を作成する場合、
anaconda
というフルパッケージが不要なら、python
のみとし、随時必要なパッケージを追加していく形でも構いません。 - コマンド
conda activate
、conda deactivate
は、conda
のバージョンが4.4以上、かつ、構築手順5で機能拡張済みの場合に利用可能となります。source activate
、source deactivate
は、シェルごと落ちることがあるので、conda
コマンドの利用を推奨します。
参考サイト
項目4. パッケージの追加
目的
- 仮想環境にパッケージを追加する
やること
- 追加したいパッケージを検索
- パッケージの追加を検証
- パッケージを追加
手順
- ターミナルを起動し、ワークスペースに移動後、仮想環境に入る。次に、コマンド
conda search <パッケージ名>
を実行し、追加可能なパッケージを検索する。パッケージが見つからない、あるいは、明らかにバージョンが古いようなら、次手順(リポジトリへのアクセス)に移る。最新パッケージが見つかった場合は、コマンドconda install --dry-run <パッケージ名>
を実行する。変更予定内容が出力されるのでよく確認する。特にダウングレードされるパッケージがある場合は、内容をよく確認する。問題なさそうなら、コマンドconda install <パッケージ名>
を実行する。最後に、仮想環境から抜けて、手順終了。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda search <パッケージ名>
conda install --dry-run <パッケージ名>
conda install <パッケージ名>
conda deactivate
- 前の手順で、パッケージが見つからない、あるいは、明らかにバージョンが古いようなら、
conda
のリポジトリにアクセスし、追加したいパッケージを検索する。通常、複数のチャンネル(owner)がヒットするので、暫定的に、ダウンロード数が多く、かつ、バージョンの新しいものを選択する。ターミナルを起動し、ワークスペースに移動後、コマンドconda install --dry-run -c <チャンネル> <パッケージ名>
を実行する。変更予定内容が出力されるのでよく確認する。特にダウングレードされる関連パッケージがないか注意する。その場合は、他のチャンネルでも試してみる。最終的にチャンネルが決まったら、コマンドconda install -c <チャンネル> <パッケージ名>
を実行する。最後に、仮想環境から抜けて、手順終了。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda install --dry-run -c <チャンネル> <パッケージ名>
conda install -c <チャンネル> <パッケージ名>
conda deactivate
補足
- 実環境(base)は、構築時の状態のまま残しておくのがベターかなと思います。何か問題が発生したとき、構築時の状態に戻すために、Anacondaの再インストールが必要だからです。何も問題が発生していないなら、特に気にする必要はありませんが…。
- 仮想環境でコマンド
conda
を使うためには、conda
のバージョンが4.4以上、かつ、構築手順5で機能拡張しておく必要があります。バージョン管理の一貫性のため、是非機能拡張しておきましょう。 - パッケージを追加するコマンドには、
pip
とconda
があります。例えば、TensorFlow公式サイトでは、公式でなくコミュニティサポートとの但し書き付きで、pip
でのインストールを指示していたりします。しかし、pip
は使わない方がベターでしょう。結局、pip
もconda
も同じ場所(~/.pyenv/versions/anaconda<バージョン>/lib/python<バージョン>/site-packages/
)にパッケージをインストールしますが、conda
から見たとき、二重にパッケージがインストールされているように見えるなど、バージョン管理が混乱するためです。参考サイトの二番目のように、実害が出るケースもあるようです。したがって、一貫してconda
を使うのが良いと考えられます。
参考サイト
項目5. パッケージの更新
目的
-
conda
を最新バージョンに更新する - 仮想環境の
python
を最新バージョンに更新する - 仮想環境の
python
をダウングレード、あるいは、メジャーアップデートする - 仮想環境のすべてのパッケージを、最新バージョンに更新する
- 仮想環境の特定パッケージを、最新バージョンに更新する
- 仮想環境の特定パッケージを、特定バージョンに更新する
やること
- パッケージの更新を検証
- パッケージを更新
手順
-
conda
を最新バージョンに更新するには、以下手順を実施する。まず、ターミナルを起動し、ワークスペースに移動する。次に、コマンドconda update --dry-run -n base conda
を実行する。変更予定内容が出力されるのでよく確認する。問題なさそうなら、コマンドconda update -n base conda
を実行する。
cd <ワークスペース>
conda update --dry-run -n base conda
conda update -n base conda
- 仮想環境の
python
を最新バージョンに更新するには、以下手順を実施する。まず、ターミナルを起動し、ワークスペースに移動後、仮想環境に入る。次に、コマンドconda update --dry-run python
を実行する。変更予定内容が出力されるのでよく確認する。問題なさそうなら、コマンドconda update python
を実行する。最後に、仮想環境から抜ける。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda update --dry-run python
conda update python
conda deactivate
- 仮想環境の
python
をダウングレード、あるいは、メジャーアップデートするには、以下手順を実施する。まず、ターミナルを起動し、ワークスペースに移動後、仮想環境に入る。次に、コマンドconda install --dry-run python=<バージョン>
を実行する。変更予定内容が出力されるのでよく確認する。問題なさそうなら、コマンドconda install python=<バージョン>
を実行する。最後に、仮想環境から抜ける。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda install --dry-run python=<バージョン>
conda install python=<バージョン>
conda deactivate
- 仮想環境のすべてのパッケージを最新バージョンに更新するには、以下手順を実施する。まず、ターミナルを起動し、ワークスペースに移動後、仮想環境に入る。次に、コマンド
conda update --dry-run --all
を実行する。変更予定内容が出力されるのでよく確認する。特にダウングレードされるパッケージがある場合は、内容をよく確認する。問題なさそうなら、コマンドconda update --all
を実行する。最後に、仮想環境から抜ける。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda update --dry-run --all
conda update --all
conda deactivate
- 仮想環境の特定パッケージを最新バージョンに更新するには、以下手順を実施する。まず、ターミナルを起動し、ワークスペースに移動後、仮想環境に入る。次に、コマンド
conda update --dry-run <パッケージ名>
を実行する。変更予定内容が出力されるのでよく確認する。問題なさそうなら、コマンドconda update <パッケージ名>
を実行する。最後に、仮想環境から抜ける。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda update --dry-run <パッケージ名>
conda update <パッケージ名>
conda deactivate
- 仮想環境の特定パッケージを特定バージョンに更新するには、以下手順を実施する。まず、ターミナルを起動し、ワークスペースに移動後、仮想環境に入る。次に、コマンド
conda search <パッケージ名>
で、更新可能なバージョンを確認する。続いて、コマンドconda install --dry-run <パッケージ名>=<バージョン>
を実行する。変更予定内容が出力されるのでよく確認する。問題なさそうなら、conda install <パッケージ名>=<バージョン>
を実行する。最後に、仮想環境から抜ける。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda search <パッケージ名>
conda install --dry-run <パッケージ名>=<バージョン>
conda install <パッケージ名>=<バージョン>
conda deactivate
補足
- 現在追加されているパッケージは、コマンド
conda list
で一覧表示できます。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda list
conda deactivate
-
conda update
の代わりにconda updgrade
でも構いません。エイリアスの関係なので、自分にとって自然な方を利用すればOKです。
参考サイト
項目6. パッケージの削除
目的
- 仮想環境からパッケージを削除する
やること
- パッケージの削除を検証
- パッケージを削除
手順
- ターミナルを起動し、以下コマンドを実行する。変更予定内容が出力されるのでよく確認する。
cd <ワークスペース>
conda info -e
conda activate <仮想環境名>
conda uninstall --dry-run <パッケージ名>
- 問題なさそうなら、以下コマンドを実行する。
conda uninstall <パッケージ名>
conda deactivate
補足
-
conda uninstall
の代わりにconda remove
でも構いません。エイリアスの関係なので、自分にとって自然な方を利用すればOKです。 - 変更予定についてですが、例えば、パッケージAがパッケージBに依存している場合、Bの削除時にAが削除されるのは、むしろパッケージ管理的に問題ないと考えられます。そのような観点で確認します。
参考サイト
項目7. 仮想環境の削除
目的
- 仮想環境を削除する
やること
- 仮想環境をJupyter Notebookのカーネルから削除
- 仮想環境の削除
手順
- ターミナルを起動し、ワークスペースに移動する。コマンド
jupyter kernelspec list
を実行し、カーネルの存在するディレクトリを確認する。確認したディレクトリを手動で削除する。 - ワークスペース内で、コマンド
conda uninstall -n <仮想環境名> --all
を実行する。
cd <ワークスペース>
jupyter kernelspec list
conda info -e
conda uninstall -n <仮想環境名> --all
conda info -e
conda deactivate
補足
-
conda uninstall
の代わりにconda remove
でも構いません。エイリアスの関係なので、自分にとって自然な方を利用すればOKです。
参考サイト
項目8. Anacondaの削除
目的
- Anacondaを削除する
やること
- 仮想環境をJupyter Notebookのカーネルから削除
- Anaconda削除ツールのインストール、実行
- Anacondaのディレクトリ一式の削除
- (必要に応じ)バックアップの削除
- Bash設定ファイルからAnaconda関連の記載を削除
- アプリケーションから、Anaconda-Navigator.app(リンク)を削除
手順
- 項目7を参考に、仮想環境をJupyter Notebookのカーネルから削除する。
- ターミナルを起動し、以下コマンドを実行する。なお、コマンド
anaconda-clean
実行時、command not found
と言われたら、exec $SHELL -l
で、シェルを再起動させるとうまくいく。
cd <ワークスペース>
conda install anaconda-clean
anaconda-clean
- Finderでホームに移動し、
[command] + [shift] + [.]
で、隠しファイルを表示する。~/.pyenv/versions
直下から、ディレクトリanaconda<バージョン>一式
を削除する。 - ディレクトリ
~/.anaconda_backup
の中身を確認し、不要と思えれば削除する。他の構成に切り替え後、再利用できそうなら残しておく。迷う場合は、大した容量ではないので、残しておく。 -
~/.bashrc
から、構築手順5で追加した記載を削除後、コマンドsource ~/.bashrc
を実行するか、コマンドexec $SHELL -l
で、シェルを再起動させる。 - アプリケーションアイコンをクリックし、「Finderで開く」をクリックする。ウィンドウが開いたら、Anaconda-Navigator.app(リンク)を削除する。
参考サイト
項目9. pyenvの削除
目的
- pyenvを削除する
やること
- ワークスペースに対する設定の削除
- pyenvの削除
- Bash設定ファイルからpyenv関連の記載を削除
手順
- Finderでワークスペースに移動し、ファイル
.python-version
を削除する。 - ターミナルを起動し、コマンド
brew uninstall pyenv
を実行する。 - Finderでホームに移動し、ディレクトリ
.pyenv
一式を削除する。 -
~/.bash_profile
、~/.bashrc
から、構築手順4で追加した記載を削除後、コマンドsource ~/.bash_profile
、source ~/.bashrc
を実行するか、コマンドexec $SHELL -l
で、シェルを再起動させる。
参考サイト