2016-02-12 12 views
10

私はお互いに依存するいくつかのpythonプロジェクトを持っています。私はプロジェクトごとに異なるリリースバージョンを持ち、異なるプロジェクトは特定のプロジェクトの異なるリリースバージョンに依存しているかもしれません。内部サーバーに自分自身のcondaリポジトリを作成して、これらのプロジェクトのリリースをcondaパッケージとしてプッシュし、他のプロジェクトがそこから必要なバージョンをインストールできるようにしたいと考えています。これは可能ですか?もしそうなら、どのように?自分のプライベートなcondaリポジトリをホストするにはどうしたらいいですか?

答えて

19

プライベートレポとしてconda custom channelを使用できます。必須の手順は、 "conda build"を使用してcondaパッケージを作成し、そのパッケージをカスタムチャネル(ディレクトリ)にコピーし、そのディレクトリでconda indexを実行することです。次に、 "conda install -c"を使用してこのチャネルからパッケージをインストールできます。

たとえば、より詳細に、のは、Linux-64を想定してみましょう:

  • チャネルを作成します。
    mkdir -p /tmp/my-conda-channel/linux-64
  • は今、あなたはmeta.yamlで "ABC" という名前のいくつかのプロジェクトを持っていると仮定し、今、あなたはそれを構築するいくつかのバージョンのXとbuild.sh:

    conda build abc

  • これをbしますconda-bldディレクトリにtar.bz2ファイルを作成します。例:〜/ miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2。自分のチャンネルにそのファイルをコピーします。

    cp ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2 /tmp/my-conda-channel/linux-64/

  • を今指数は:

    conda index /tmp/my-conda-channel/linux-64/

今、あなたのカスタムチャネルにそのパッケージをアップロードしました。リコールは、Xがそう版です、あなたのチャンネルで複数のバージョンを配置したら、あなたは特定のバージョンをインストールすることができます

conda install -c file://tmp/my-conda-channel/ abc=X 

を:あなたは実行して、conda環境のいずれかでそれをインストールすることができます。

"abc"のXバージョンに依存するプロジェクトをお持ちの場合は、そのプロジェクトmeta.yamlにプロジェクトを追加するだけです。例:

package: 
    name: some-other-project 
    version: 0.1 
requirements: 
    build: 
    - abc X 
... 

あなたはそれが自動的に検索されますように、あなたの.condarcファイルに追加することがおそらく良いでしょう。このチャンネルを作成したら。例:

channels: 
- file://tmp/my-conda-channel/ 
- defaults 
+1

httpでアクセスできるようにするには、これを行う方法はありますか? – ostrokach

関連する問題