われがわログ

最適化アルゴリズムとかプログラミングについて書きたい

conda-forgeからのPythonパッケージインストール

conda-forgeからPythonパッケージをインストールする際、conda install -c conda-forge hogehogeとしたら要らないパッケージまでインストールされそうになったのでメモ。

2020/1/1 追記

このページは割と見られているようなので、公式のインストール手順ページへのリンクも貼っておく。

A brief introduction — conda-forge 2019.01 documentation

2019/11/3 追記

本記事の手順でパッケージインストールすると、conda-forge由来のパッケージと、anaconda由来のものが混じる。 パッケージによってはこれがバグ(おそらく実行時にエラーがでる)を引き起こすこともあるので注意。 例えば、geopandasなど。詳細は以下。 qiita.com

個人的には、conda-forge由来のパッケージを一つでも使う場合には、すべてのパッケージをconda-forge由来にしたほうがよいのではと感じる。 conda-forge onlyで困ったことはないし。

まとめ

  • conda config --append channels conda-forge してからconda install hogehogeする
  • 最初のコマンドは、初めてconda-forgeからインストールするときに必要。2回目以降は不要。

解決法

conda install -c conda-forge hogehogeとするとconda-forgeチャンネルの優先度がデフォルトチャンネルよりも高くなってしまうことが原因ではないかと考えている。そこで、

conda config --append channels conda-forge

とコマンドを打ち、conda-forgeを低優先度でチャンネル追加したのちに

conda install hogehoge

とパッケージをインストールすればよい。 チャンネル追加は一度やれば十分なので、次からはinstallコマンドを打つだけでよい。

実行例

不要なパッケージがインストールされそうになる例

PS C:\Users\USER> conda install -c conda-forge tensorboardx
Solving environment: done

## Package Plan ##

  environment location: C:\Users\USER\Miniconda3

  added / updated specs:
    - tensorboardx


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    certifi-2018.11.29         |        py37_1000         144 KB  conda-forge
    python-3.7.1               |    hc182675_1000        20.9 MB  conda-forge
    tensorboardx-1.6           |             py_0          63 KB  conda-forge
    cryptography-2.3.1         |py37h74b6da3_1000         506 KB  conda-forge
    openssl-1.0.2p             |    hfa6e2cd_1002         5.4 MB  conda-forge
    qt-5.9.6                   |   vc14h1e9a669_2        93.9 MB
    protobuf-3.6.1             |py37he025d50_1001         515 KB  conda-forge
    conda-4.5.12               |        py37_1000         660 KB  conda-forge
    ca-certificates-2018.11.29 |       ha4d7672_0         179 KB  conda-forge
    libprotobuf-3.6.1          |    h1a1b453_1000         2.0 MB  conda-forge
    ------------------------------------------------------------
                                           Total:       124.2 MB

The following NEW packages will be INSTALLED:

    libprotobuf:     3.6.1-h1a1b453_1000     conda-forge
    protobuf:        3.6.1-py37he025d50_1001 conda-forge
    tensorboardx:    1.6-py_0                conda-forge

The following packages will be UPDATED:

    ca-certificates: 2018.03.07-0                        --> 2018.11.29-ha4d7672_0   conda-forge
    certifi:         2018.11.29-py37_0                   --> 2018.11.29-py37_1000    conda-forge
    conda:           4.5.12-py37_0                       --> 4.5.12-py37_1000        conda-forge

The following packages will be DOWNGRADED:

    cryptography:    2.4.2-py37h7a1dbc1_0                --> 2.3.1-py37h74b6da3_1000 conda-forge
    openssl:         1.1.1a-he774522_0                   --> 1.0.2p-hfa6e2cd_1002    conda-forge
    python:          3.7.2-h8c8aaf0_0                    --> 3.7.1-hc182675_1000     conda-forge
    qt:              5.9.7-vc14h73c81de_0                --> 5.9.6-vc14h1e9a669_2

Proceed ([y]/n)? n

以下のやりかただと、最小限のインストールで済む

PS C:\Users\USER> conda config --append channels conda-forge
>>
PS C:\Users\USER> conda install tensorboardx
Solving environment: done

## Package Plan ##

  environment location: C:\Users\USER\Miniconda3

  added / updated specs:
    - tensorboardx


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    tensorboardx-1.6           |             py_0          63 KB  conda-forge
    libprotobuf-3.6.1          |       h7bd577a_0         1.9 MB
    protobuf-3.6.1             |   py37h33f27b4_0         514 KB
    ------------------------------------------------------------
                                           Total:         2.5 MB

The following NEW packages will be INSTALLED:

    libprotobuf:  3.6.1-h7bd577a_0
    protobuf:     3.6.1-py37h33f27b4_0
    tensorboardx: 1.6-py_0             conda-forge

Proceed ([y]/n)?

参考

以下のページがよくまとまっている。 devlights.hatenablog.com