condaでカスタムチャネルを作る

Pythonのcondaによるパッケージ管理で、ローカルにリポジトリ(カスタムチャネル)を作り、そこからパッケージをインストールする。
複数の環境でいついかなる時でもバージョンを統一したい、ローカルで高速にセットアップしたい場合などに。

公式サイトの手順はこちら

カスタムチャネルの作成

conda-buildのインストール

condaのチャネルを作るにはconda-buildライブラリが必要なのでインストールしておく。

conda install conda-build

フォルダ構成

まず、以下の構成でフォルダを作り、パッケージファイル(.tar.bz2)を配置する。

channel_dir/
            linux-64/                                    # for Linux (x86_64)
                     package1-for-linux64-x.y-z.tar.bz2
                     package2-for-linux64-x.y-z.tar.bz2
                     ...
            linux-32/                                    # for Linux (x86)
                     package1-for-linux32-x.y-z.tar.bz2
                     ...
            win-32/                                      # for Windows (32bit)
                   ...
            win-64/                                      # for Windows (64bit)
                   ...
            osx-64/                                      # for MacOS X (64bit)
                   ...
            noarch/                                      # for All
                   ...

なお、不要なアーキテクチャ用のサブフォルダは作らなくてもよい。
(例えば、Windows 64bitしか相手にしないのであればwin-64とnoarchだけ作ればよい)

conda indexでチャネル化

cd /path/to/parent/of/channel_dir

# conda index channel_dir/target_arch

# windows 64bitだけなら
conda index channel_dir/win-64 channel_dir/noarch

しばらくすると、引数で与えたサブフォルダ内にrepodata.jsonおよびrepodata.json.bz2が生成される。

以上でカスタムチャネルの作成は終了。

カスタムチャネルの利用

公式にもあるように、conda installの時に-cでカスタムチャネルのパスを与えればよい。

# カスタムチャネルを含める
conda install -c /path/to/channel_dir

# カスタムチャネルだけにする(はずだが)
conda install -c /path/to/channel_dir --override-channels

–override-channelsオプションを付けるとデフォルトのチャネルを全く見なくなるかと思いきや、そうではなく
利用可能なチャネルすべてについてパッケージを確認した後、そのうちカスタムチャネルだけから引っ張ってくる、という動きをする。

一旦デフォルトのチャネルを見るので遅い、ということもあるが
認証(特にDigestやNTLM)を必要とするプロキシ裏やTLSデコードするプロキシ裏にいる場合、デフォルトチャネルへのアクセスができず、結果全体が失敗することになる…。

カスタムチャネルのみ利用させる

condarcという設定ファイルで、チャネルをはじめcondaの設定を行えるので
本当にカスタムチャネルのみを参照させる場合には、このファイルでデフォルトチャネルを空配列に置き換えてやればよい。

ssl_verify: true
channels: []
#  - anaconda-fusion
#  - defaults
default_channels: []

こうしたうえで、-c /path/to/channel_dirとすればカスタムチャネルだけを参照する。

conda install some_package -y -c /path/to/channel_dir

Windowsでローカルディスクを指定する場合

公式には、file://path/to/channel_dirとするようあるが、Windowsの場合は”file://~”とすると警告が出る。
https://github.com/conda/conda/issues/5576

なのでWindowsの場合にはWindowsでいうパスの形で指定する。

conda install some_package -y -c "C:\path\to\channel_dir"

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です