LoginSignup
6
8

More than 5 years have passed since last update.

condaにないパッケージをanaconda.orgにアップロードして管理する

Posted at

Introduction

condaでインストールできないパッケージは、通常pipでインストールしますが、condaでパッケージをbuildして管理することも可能(なはず)です。

このやり方だけでは、必要なパッケージがpipとcondaの両方で入るっぽいのでいまいちです。
どなたか詳しいことをご存知な方がいらっしゃいましたらお教えください。

必要パッケージ

condaでbuildするのと、anaconda.orgにアップロードするのに必要なパッケージをcondaでインストールします。

conda install conda-build anaconda-client

最近まで64bit Winはバグがあったため、windows使いで既にconda-buildが入っていた人はアップデートしておいた方がいいです。

conda update conda-build

conda化&upload

例としてpandas_mlをconda化する場合はこんな感じです。
skeletonでbuildのレシピを作って、ローカルでbuild、必要に応じてanaconda.orgにアップロードします。

mkdir work
cd work
conda skeleton pypi pandas_ml --version 0.3.0 
cd pandas_ml
conda build . --python=3.4
# To have conda build upload to anaconda.org automatically, use
# $ conda config --set anaconda_upload yes
conda build . --output
#>>> <anaconda root>\conda-bld\win-64\pandas_ml-0.3.0-py34_0.tar.bz2

anaconda.orgを使わないでローカルでインストールする場合

onda install --use-local pandas_ml

anaconda.orgにアップロードする場合

anaconda.orgのサインアップをしておきます。privateを使わなければ無料です。

anaconda login
#>>> Using Anaconda Cloud api site https://api.anaconda.org
#>>> Username: y__sama
#>>> Password:
#>>> login successful
#>>> y__sama's
anaconda upload <anaconda root>\conda-bld\win-64\pandas_ml-0.3.0-py34_0.tar.bz2

よくanacondaにアップロードする場合はconda config --set anaconda_upload yesを設定しておきます。

anaconda.orgからインストールする場合は、いつもどおりチャネルを指定してインストールでOKです。

conda install -c y__sama pandas_ml

エラーが出ることがちょくちょくありますが、依存関係のあるパッケージが、condaでインストールできないかレシピ(meta.yaml)に記載されてないかが理由です。エラーが出た場合はメッセージを見ながら依存パッケージを別途conda buildで作っておくかmeta.yamlを編集するかが、必要になります。

local内での環境copy

conda create -n env_copy --clone env

他のサーバへ(ファイルを介して)の移行

anaconda.orgにアップロードして使う場合は、channelを追加しておきます。

conda config --add channels y__sama

環境を一旦ファイルにエキスポートして、create時に--fileオプションで指定します。

conda list -e > env.txt
conda create -n env_file --file env.txt

でも、なぜかpipとcondaと両方入ってしまいます。。。

conda list
#>>> ...略
#>>> jsonschema                2.5.1                    py35_0    defaults
#>>> jupyter-client            4.2.2                     <pip>
#>>> jupyter-cms               0.5.0                     <pip>
#>>> jupyter-core              4.1.0                     <pip>
#>>> jupyter_client            4.2.2                    py35_0    defaults
#>>> jupyter_cms               0.5.0                    py35_0    y__sama
#>>> jupyter_core              4.1.0                    py35_0    defaults
#>>> libsodium                 1.0.3                         0    defaults
#>>> ...略

これでpip freezeとconda listを併用することなくconda listのみでパッケージ管理できるはず(なん)です。

詳しい方がいらっしゃいましたら、コメントをいただければ幸いです。

参考

https://gist.github.com/aphlysia/d5fcee79ff81b8272faf
http://conda.pydata.org/docs/build_tutorials/pkgs.html
http://docs.anaconda.org/cli.html

6
8
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
6
8