【Python】condaのよく使うコマンドの使い方

18 min

こんにちは。ナミレリです。みなさん、MacでPythonは使っていますか?
M1やM2などのApple Siliconを搭載したMacでシンプルで使いやすいPython環境の構築方法はいくつかありますが、私はpyenv+condaを使った構築をおすすめします。

今回はそのcondaの良く使うコマンドを実際に試しながら紹介していきます。。

この記事はこんな人にオススメ

  • condaのコマンドオプションを知りたい
  • condaで出来ることを知りたい
  • condaを便利にもっと使いこなしたい

pyenvのよく使うコマンドついては下の記事でまとめていますのでぜひご覧ください。

この記事のMac環境
  • M2 MacBook Air 13.6 インチ(メモリ16GB)
  • M1 Max MacBook Pro 14インチ(メモリ32GB)
  • macOS Ventura 13.1
  • pyenv 2.3.9

はじめに

condaコマンドはパッケージのインストールや、仮想環境の作成・切り替えなどの多くのコマンドが用意されています。

condaのコマンドのできることはPython Japanの下記サイトにわかりやすく書かれています。

またcondaコマンドのリファレンスはdocs.conda.ioの下記サイトが参考になります。

この記事では、上記サイトやconda --helpを参考にして各コマンド実際に試しながらわかりやすく紹介したいと思います。

conda コマンド一覧

まずはアルファベット順にcondaコマンドの簡単な説明を記載します。

command説明
conda clean未使用のパッケージとキャッシュを削除する。
conda compareconda仮想環境同士の('environment.yml'などを比較する。
conda config設定ファイルである.condarcの設定値を変更する。
conda create新しいconda仮想環境を作成する。
conda info現在アクティブな仮想環境の情報を表示する。
conda initcondaを初期化する。
conda installパッケージを指定したconda仮想環境にインストールする。
conda listconda仮想環境にインストールされているパッケージを一覧表示する。
conda remove
conda uninstall
指定したconda仮想環境からパッケージを削除する。
conda rename既存のconda仮想環境の名前を変更する。
conda runconda仮想環境で実行可能ファイルを実行する。
conda searchパッケージを検索して表示する。
conda update
conda upgrade
condaのパッケージを最新バージョンに更新する。
conda notices最新のチャネル通知を取得する。
condaコマンドの一覧

それでは以下に1つずつcondaコマンドを試しながら紹介していきます。

Udemyのデータサイエンスコース

Pythonのデータサイエンスを学びたい方におすすめ!

講座買い切り型で、視聴期限なし。自分のペースで学べる。

現場で活躍されているプロが教えるコースを選べます。

conda clean

conda cleanは未使用のパッケージとキャッシュを削除します。

conda cleanの使い方です。

conda cleanの使い方


conda clean [-h] [-a] [-i] [-p] [-t] [-f] [-c [TEMPFILES ...]] [-l]
            [-d] [--json] [-q] [-v] [-y]

まずは-dオプションでdry-runで試してみましょう。-dオプションは予行演習なので実際にcleanにはしません。

まずはdry-runで予行演習


conda clean --all -d
Will remove 209 (405.6 MB) tarball(s).
Will remove 1 index cache(s).
Will remove 34 (60.2 MB) package(s).
There are no tempfile(s) to remove.
There are no logfile(s) to remove.

DryRunExit: Dry run. Exiting.

上の例ではtarballが209個も存在し、古い利用していないパッケージは34個もあり、トータルで460MBも不要なファイルがある、ということですね。

では実際にcleanしてみましょう。確認メッセージが表示されるので安心です。

実際にcleanします。


conda clean --all
Will remove 209 (405.6 MB) tarball(s).
Proceed ([y]/n)? y

Will remove 1 index cache(s).
Proceed ([y]/n)? y

Will remove 34 (60.2 MB) package(s).
Proceed ([y]/n)? y

There are no tempfile(s) to remove.
There are no logfile(s) to remove.

209個405.6MBのtarballと、1個のキャッシュ、34個60.2MBの古いパッケージが削除することができました。

conda compare

conda compareの使い方です。coda compareconda仮想環境同士の環境を比較することができます。

conda compareの使い方


conda compare [-h] [--json] [-v] [-q] [-n ENVIRONMENT | -p PATH] file

例えば、envAenvBというconda仮想環境があったとして、インストールしたcondaパッケージやpipの違いを確認できます。

まずはenvBの情報をymlで書き出します。


conda env export -n envB > envB.yml 

envAをアクティブにして、envB.ymlと比較するには下のようにします。


conda activate envA
conda compare envB.yml

envAをアクティブにしなくても下のようにconda環境名で指定して比較することもできます。


conda compare -n envA envB.yml

環境が同じ場合は下のメッセージが表示されます。


conda compare -n envA envB.yml
Success. All the packages in the specification file are present in the environment with matching version and build string.

こんな風に環境を比較した時に便利です。

conda config

conda configの使い方です。coda configは設定ファイルである.condarcの設定値を変更して各種の設定を確認、変更できます。

conda configの使い方


 conda config [-h] [--json] [-v] [-q] [--system | --env | --file FILE]
                    [--show [SHOW ...] | --show-sources | --validate |
                    --describe [DESCRIBE ...] | --write-default]
                    [--get [KEY ...] | --append KEY VALUE | --prepend KEY
                    VALUE | --set KEY VALUE | --remove KEY VALUE |
                    --remove-key KEY | --stdin]

conda configも多数のオプションがありよく使うものを紹介します。

現在の設定を確認するには下のようにします。

--showで設定を確認する


conda config --show

channelsの値は下のように確認できます。

--show-sourcesで設定値を確認する


conda config --show-sources

channels追加するには下のようにします。(highest priorityとして追加されます)

channelを追加する


conda config --add channels CHANNELNAME

channels削除するには下のようにします。

channelを削除する


conda config --remove channels CHANNELNAME

設定されたchannels一覧を表示し確認するには下のようにします。

channelsを一覧表示


conda config --get channels

conda configでチャンネルを操作する

では、biocondaというチャンネルを追加し、優先度を変更したり、削除したり試してみます。

biocondaを使うと生物医学研究に関する何千ものパッケージをインストールすることができますが、普段は使わないので試したら削除します。

まずは現在設定されているchannelsを確認します。lowest priorityとしてconda-forgeが登録されています。


conda config --get channels
--add channels 'conda-forge'   # lowest priority

では、biocondaチャンネルを追加してみます。


conda config --add channels bioconda

biocondachannelsに追加されたか確認します。ポイントは--add channelsで追加したのでhighest priorityになっている点です。


conda config --get channels
--add channels 'conda-forge'   # lowest priority
--add channels 'bioconda'   # highest priority

--add channelsで追加したのでhighest priorityとして追加されています。

追加したbiocondachannelsから削除してみます。


conda config --remove channels bioconda


conda config --get channels
--add channels 'conda-forge'   # lowest priority
# biocondaは削除されましたね

今度は、--append channelsを使って優先度の低い状態で追加してみます。一番後ろに追加するので優先度が低い、というイメージです。


conda config --append channels bioconda


conda config --get channels
--add channels 'bioconda'   # lowest priority
--add channels 'conda-forge'   # highest priority

--append channelsで追加したのでlowest priorityとして追加されています。

最後にbiocondachannelsから削除しておきます。


conda config --remove channels bioconda


conda config --get channels
--add channels 'conda-forge'   # lowest priority
# biocondaは削除されましたね

conda create

conda createの使い方です。coda createは新しいconda仮想環境を作成します。

conda createの使い方


conda create [-h] [--clone ENV] (-n ENVIRONMENT | -p PATH) [-c CHANNEL]
             [--use-local] [--override-channels]
             [--repodata-fn REPODATA_FNS] [--strict-channel-priority]
             [--no-channel-priority] [--no-deps | --only-deps]
             [--no-pin] [--copy] [-C] [-k] [--offline] [-d] [--json]
             [-q] [-v] [-y] [--download-only] [--show-channel-urls]
             [--file FILE] [--no-default-packages]
             [--solver {classic} | --experimental-solver {classic}]
             [--dev]
             [package_spec ...]

coda createも多数のオプションがありますが-n ENVIRONMENT--clone ENVのオプションは良く使うので覚えておくとよいと思います。

それではconda createで仮想環境を作ってみます。下の例ではenvAenvBというconda仮想環境を作成します。

仮想環境の作成


conda create -n envA
conda create -n envB

この時、下のようにパッケージを指定することで仮想環境作成と当時にパッケージをインストールできます。

同時にパッケージをインストール


conda create -n envA numpy "libblas=*=*accelerate"
conda create -n envB pandas

また、--cloneを使うと簡単に仮想環境のコピーを作ることができます。下の例ではenvCenvBのクローンとして作成します。


conda create -n envC --clone envB
Source:      /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envB
Destination: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envC
Packages: 127
Files: 0

便利な方法として、exportしたインストール済のパッケージ一覧から新しい環境を作ることもできます。


conda list --export > package-list.txt
conda create -n envD --file package-list.txt

conda info

conda infoの使い方です。coda infoは現在アクティブな仮想環境の情報を表示します。

conda infoの使い方


conda info [-h] [--json] [-v] [-q] [-a] [--base] [-e] [-s]
           [--unsafe-channels]

-aまたは--allで、現在アクティブな仮想環境の全ての情報を表示します。


conda info --all
(略)
sys.version: 3.10.6 | packaged by conda-forge | (main...
sys.prefix: /Users/u/.pyenv/versions/miniforge3-22.9.0-2
sys.executable: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/bin/python
(略)
CIO_TEST: <not set>
CONDA_DEFAULT_ENV: base
CONDA_EXE: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/bin/conda
CONDA_PREFIX: /Users/u/.pyenv/versions/miniforge3-22.9.0-2
CONDA_PROMPT_MODIFIER: (base) 
CONDA_PYTHON_EXE: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/bin/python
CONDA_ROOT: /Users/u/.pyenv/versions/miniforge3-22.9.0-2
CONDA_SHLVL: 1
CURL_CA_BUNDLE: <not set>
LD_PRELOAD: <not set>
(略)

-eまたは--envsで全ての仮想環境をリストで表示します。


conda info -e
base  *  /Users/u/.pyenv/versions/miniforge3-22.9.0-2
envA     /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envA
envB     /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envB
envC     /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envC

conda init

conda initの使い方です。coda initはShellで有効になるようにcondaを初期化します。

conda initの使い方


conda init [-h] [--all] [--user] [--no-user] [--system] [--reverse]
           [--json] [-v] [-q] [-d]
           [SHELLS ...]

例えば、お使いのShellで有効にするためにはconda init [SHELL]を実行します。指定可能なSHELLは’bash‘, ‘fish‘, ‘powershell‘, ‘tcsh‘, ‘xonsh‘, ‘zsh‘です。[SHELL]を指定しない場合は、デフォルトではbashとなります。

conda initはShellの設定ファイルにスクリプトを追加しますので、まずは-dで予行演習することをおすすめします。-dまたは--dry-runで予行演習できます。

zshの場合は下のようにします。


conda init zsh -d

問題なければ下のようにconda init zshします。これにより~/.zshrcに初期化スクリプトが追加されます。


conda init zsh

conda initの実行後はShellを再起動して反映する必要があります。

--allオプションは利用可能な全てのShellを初期化します。-dで予行演習してみます。


conda init -d --all

また、 --systemで全てのユーザーに対してconda initを行うことができます。こちらも-dで予行演習してから実行することをおすすめします。


conda init zsh --system -d

conda install

conda installの使い方です。coda installはパッケージを指定したconda仮想環境にインストールします。もっとも良く使うコマンドではないでしょうか。

conda installの使い方


conda install [-h] [--revision REVISION] [-n ENVIRONMENT | -p PATH]
      [-c CHANNEL] [--use-local] [--override-channels]
      [--repodata-fn REPODATA_FNS] [--strict-channel-priority]
      [--no-channel-priority] [--no-deps | --only-deps] [--no-pin]
      [--copy] [-C] [-k] [--offline] [-d] [--json] [-q] [-v] [-y]
      [--download-only] [--show-channel-urls] [--file FILE]
      [--solver {classic} | --experimental-solver {classic}]
      [--force-reinstall]
      [--freeze-installed | --update-deps | -S | --update-all | --update-specs]
      [-m] [--clobber] [--dev]
      [package_spec ...]

coda installも多数のオプションがあります。-n ENVIRONMENTのオプションとバージョン指定の方法は良く使うので覚えておくとよいと思います。

conda install-dでドライランすることができ何が起こるか確認することができます。-dまたは--dry-runで確認することをおすすめします。

まずは最も基本的な使い方として、現在アクティブな環境にnumpypandasをインストールするには下のようにします。この時、複数のパッケージを指定することができます

最も一般的なパッケージインストール方法


conda install numpy pandas

また、-n ENVIRONMENT仮想環境を指定してインストールすることもできます

仮想環境にパッケージをインストールする


conda install -n envA numpy pandas

パッケージのバージョンを指定してインストールすることもできます。指定しない場合は最新版がインストールされます。[package]==[version]で指定します。

バージョンを指定したインストール方法


conda install numpy==1.23.5 pandas

なお、-cまたは --channelでチャンネルを指定することができます。

conda list

conda listの使い方です。coda listは仮想環境にインストールされているパッケージを一覧表示します。

conda listの使い方


conda list [-h] [-n ENVIRONMENT | -p PATH] [--json] [-v] [-q]
           [--show-channel-urls] [-c] [-f] [--explicit]
           [--md5] [-e] [-r] [--no-pip]
           [regex]

coda listも多数のオプションがあります。-n ENVIRONMENTのオプションと-rオプション、--exportオプションは便利に使えるので覚えておくとよいと思います。

インストール済パッケージを表示する


conda list -n envC

-rまたは--revisionsでリビジョン履歴を表示することもできます。

リビジョン履歴を表示する


conda list -n envC -r
2023-01-12 16:08:17  (rev 0)
    +anyio-3.6.2 (conda-forge/noarch)
    +appnope-0.1.3 (conda-forge/noarch)
    +argon2-cffi-21.3.0 (conda-forge/noarch)
    +argon2-cffi-bindings-21.2.0 (conda-forge/osx-arm64)
    +asttokens-2.2.1 (conda-forge/noarch)
(略)

便利な方法として、exportしたインストール済のパッケージ一覧から新しい環境を作ることもできます。


conda list -n envC --export > package-list.txt
conda create -n envD --file package-list.txt

conda remove

conda removeの使い方です。coda removeは指定したconda仮想環境からパッケージを削除します。conda uninstallでも同じ動作となります。パッケージをアンインストールするときに使います。

conda removeの使い方


usage: conda remove [-h] [-n ENVIRONMENT | -p PATH] [-c CHANNEL] [--use-local]
         [--override-channels] [--repodata-fn REPODATA_FNS] [--all]
         [--features] [--force-remove] [--no-pin]
         [--solver {classic} | --experimental-solver {classic}]
         [-C] [-k] [--offline] [-d] [--json] [-q] [-v] [-y] [--dev]
         [package_name ...]

coda removeも多数のオプションがあります。-n ENVIRONMENTのオプションは良く使うので覚えておくとよいと思います。

conda remove-dでドライランすることができ何が起こるか確認することができます。アンインストール前に-dまたは--dry-runで確認することをおすすめします。

まずは最も基本的な使い方として、現在アクティブな環境のnumpypandasをアンインストールするには下のようにします。この時、複数のパッケージを指定することができます

まずは、-dまたは--dry-runで確認してみます。

アンインストールをドライラン


conda remove numpy pandas -d
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##
  environment location: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envC
  removed specs:
    - numpy
    - pandas
The following packages will be REMOVED:
  numpy-1.24.1-py311ha92fb03_0
  pandas-1.5.2-py311h4eec4a9_2

DryRunExit: Dry run. Exiting.

実際にアンインストールします。

最も一般的なアンインストール方法


conda remove numpy pandas

また、-n ENVIRONMENT仮想環境を指定してインストールすることもできます

仮想環境を指定したアンインストール方法


conda remove -n envA numpy pandas

指定した仮想環境を全て削除する


conda remove -n envA --all

conda rename

conda renameの使い方です。coda renameconda仮想環境の名前を変更することができます。注意点としてbase環境と現在アクティブな仮想環境の名前は変更できません。

conda renameはbase環境と現在アクティブな仮想環境の名前は変更できない

conda renameの使い方


conda rename [-h] [-n ENVIRONMENT | -p PATH]
             [--force] [-d] destination

base環境の名前を変更しようとすると下のようなエラーとなります。-dまたは--dry-runで確認してみます。


conda rename -n base test -d
CondaEnvException: The 'base' environment cannot be renamed

また、アクティブな仮想環境の名前を変更しようとすると下のようなエラーとなります。-dまたは--dry-runで確認してみます。


conda rename -n envC test -d
CondaEnvException: Cannot rename the active environment

では、仮想環境envCenvEに名前変更してみます。


conda rename -n envC envE
Source:      /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envC
Destination: /Users/u/.pyenv/versions/miniforge3-22.9.0-2/envs/envE
Packages: 127
Files: 0

Downloading and Extracting Packages
Downloading and Extracting Packages

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

無事に仮想環境の名前変更ができました。

conda run

conda runの使い方です。coda runは指定した仮想環境で実行可能なファイルを実行することができます。

conda runの使い方


conda run [-h] [-n ENVIRONMENT | -p PATH] [-v] [--dev]
          [--debug-wrapper-scripts] [--cwd CWD] [--no-capture-output]
          ...

例えば、別の仮想環境のpythonを実行するには下のようにします。

別の仮想環境のpythonを実行


conda run -n envE python --version
Python 3.11.0

conda search

conda searchの使い方です。coda searchでパッケージを検索することができます。

conda searchの使い方


conda search [-h] [--envs] [-i] [--subdir SUBDIR] [-c CHANNEL]
             [--use-local] [--override-channels] 
             [--repodata-fn REPODATA_FNS] [-C] [-k]
             [--offline] [--json] [-v] [-q]

まずは普通に検索してみます。numpyを検索します。conda-forgeにはnumpy1.24.1であればpython3.8〜3.11までのビルドが検索されました。


conda search numpy
Loading channels: done
# Name        Version     Build          Channel
(略)
numpy         1.24.1  py310h5d7c261_0  conda-forge         
numpy         1.24.1  py311ha92fb03_0  conda-forge         
numpy         1.24.1  py38h09ac2d9_0   conda-forge         
numpy         1.24.1  py39hefdcf20_0   conda-forge   

-iまたは--infoオプションはより詳しい情報を出力してくれます。

-iを指定して検索


conda search numpy -i
(略)
numpy 1.24.1 py39hefdcf20_0
---------------------------
file name   : numpy-1.24.1-py39hefdcf20_0.conda
name        : numpy
version     : 1.24.1
build       : py39hefdcf20_0
build number: 0
size        : 5.1 MB
license     : BSD-3-Clause
subdir      : osx-arm64
url         : https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.24.1-py39hefdcf20_0.conda
md5         : 9b97f70dacd20da049d2a02efe74c1ae
timestamp   : 2022-12-30 16:04:32 UTC
constraints : 
  - numpy-base <0a0
dependencies: 
  - libblas >=3.9.0,<4.0a0
  - libcblas >=3.9.0,<4.0a0
  - libcxx >=14.0.6
  - liblapack >=3.9.0,<4.0a0
  - python >=3.9,<3.10.0a0
  - python >=3.9,<3.10.0a0 *_cpython
  - python_abi 3.9.* *_cp39

--subdirでプラットフォームを指定して検索することもできます。デフォルトでは使っているプラットフォームで検索されます。linux-64osx-64win-64などを指定します。

プラットフォームを指定して検索


conda search numpy --subdir=linux-64

パッケージバージョンを指定したり検索にワイルドカードも使うこともできます。

バージョンを指定して検索


conda search 'numpy>=1.12'

ワイルドカードで検索


conda search 'scikit*'

conda update

conda updateの使い方です。coda updateはパッケージを最新バージョンにアップデートします。

conda updateの使い方


conda update [-h] [-n ENVIRONMENT | -p PATH] [-c CHANNEL] [--use-local]
             [--override-channels] [--repodata-fn REPODATA_FNS]
             [--strict-channel-priority] [--no-channel-priority]
             [--no-deps | --only-deps] [--no-pin] [--copy] [-C] [-k]
             [--offline] [-d] [--json] [-q] [-v] [-y] [--download-only]
             [--show-channel-urls] [--file FILE]
             [--solver {classic} | --experimental-solver {classic}]
             [--force-reinstall]
             [--freeze-installed | --update-deps | -S | --update-all | --update-specs]
             [--clobber]
             [package_spec ...]

conda updateも多数のオプションがありますが、これまでのコマンドと同じように-n ENVIRONMENT-c CHANNEL--dry-run--allをまずは覚えておきたいです。

numpyをアップデートするには下のようにします。


conda update numpy

仮想環境を指定してnumpyをアップデートするには下のようにします。下の例ではenvEという仮想環境名。


conda update -n envE numpy

指定した仮想環境の全てのパッケージをアップデートするには下のようにします。


conda update -n envE --all

ドライランで現在の仮想環境の全てのパッケージをアップデートするには下のようにします。


conda update conda -d
Collecting package metadata (current_repodata.json): done
Solving environment: done

# All requested packages already installed.

-c CHANNELでチャンネルを指定したり、--dry-runでドライランも可能です。

最後に

最後まで読んでいただきありがとうございます。今回の【Python】condaのよく使うコマンドの使い方はいかがでしたでしょうか。condaのコマンドはたくさんありますが普段なかなか使わないコマンドも多いのではないでしょうか。この記事であらたなコマンドの発見に繋がれば幸いです。みなさんのMacライフを便利にしていただけたらと思います。

Udemyのプログラミングの基礎コース

プログラミングの基礎を学びたい方におすすめ!

講座買い切り型で、視聴期限なし。自分のペースで学べる。

現場で活躍されているプロが教えるコースを選べます。

定番おすすめ記事

M1、M2のMacでPythonの開発環境を構築することや、分野別のライブラリのインストール方法を下記の記事でまとめています。ぜひご覧ください。

カテゴリー:
関連記事