5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

macOSに構築したPython環境を維持管理する(pyenv+Anaconda)

Last updated at Posted at 2018-08-05

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 upgradebrew cleanupの代わりに、brew upgrade --cleanupを実行しても構いません。
  • brew cask installでインストールしたソフトウェアの内、例えばGoogle Chromeのように、ソフトウェア自体にアップグレード機能が付いているものは、brew cask upgradeではアップグレードされません。各ソフトウェアの機能を使ってアップグレードしてください。
  • Homebrewの用語(brew, celler, formula...)については、参考サイトの五番目がわかりやすいです。(ちなみに、caskは樽を意味します。)

参考サイト

項目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の仕組みについては、参考サイトの二番目がすごくわかりやすいと思います。
  • コミットメッセージに迷う(間違った)、あるいは、コミットの頻度に迷う場合は、参考サイトの三番目以降が参考になります。

参考サイト

項目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 activateconda deactivateは、condaのバージョンが4.4以上、かつ、構築手順5で機能拡張済みの場合に利用可能となります。source activatesource 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で機能拡張しておく必要があります。バージョン管理の一貫性のため、是非機能拡張しておきましょう。
  • パッケージを追加するコマンドには、pipcondaがあります。例えば、TensorFlow公式サイトでは、公式でなくコミュニティサポートとの但し書き付きで、pipでのインストールを指示していたりします。しかし、pipは使わない方がベターでしょう。結局、pipcondaも同じ場所(~/.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_profilesource ~/.bashrcを実行するか、コマンドexec $SHELL -lで、シェルを再起動させる。

参考サイト

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?