2016-02-12 46 views
10

Mam kilka projektów Pythona, które są zależne od siebie nawzajem. Dla każdego projektu mam różne wersje wydań, a różne projekty mogą być zależne od różnych wersji wydania danego projektu. Chciałbym stworzyć własne repozytorium kondycji na wewnętrznym serwerze, gdzie będę mógł wypuścić wersje tych projektów jako pakiety conda, a inne projekty mogą tam zainstalować wymaganą wersję. czy to możliwe? Jeśli tak to jak?Jak mogę hostować moje prywatne repozytorium konda?

Odpowiedz

19

Możesz użyć conda custom channel jako prywatnego repozytorium. Zasadnicze kroki to użycie "conda build" w celu utworzenia pakietu conda, a następnie skopiowanie tego pakietu do własnego kanału (katalogu), a następnie uruchomienie indeksu conda w tym katalogu. Następnie możesz zainstalować pakiety z tego kanału, używając "conda install -c".

Przykładem, bardziej szczegółowo, załóżmy, linux-64:

  • Utwórz kanał:
    mkdir -p /tmp/my-conda-channel/linux-64
  • Teraz zakładając, że mają jakiś projekt o nazwie "abc" z meta.yaml i build.sh z jakiejś wersji X. teraz można zbudować go:

    conda build abc

  • to będzie b uild plik tar.bz2 w swoim katalogu conda-bld. Na przykład: ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2. Skopiuj ten plik do swojego kanału:

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

  • Teraz Indeks go:

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

pan teraz przesyłane przez ten pakiet do swojego kanału niestandardowego. Można go zainstalować w dowolnych środowiskach Conda wykonując:

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

Gdzie, przypomnijmy, X jest wersją więc, kiedy już umieścić więcej wersji w kanale można zainstalować konkretne wersje.

Jeśli masz projekt, który zależy od wersji X "abc", to po prostu dodajemy go do tych projektów meta.yaml. Przykład:

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

Po utworzeniu tego kanału to chyba dobry pomysł, aby dodać go do pliku .condarc tak, że będzie się automatycznie przeszukiwane. Na przykład:

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

Jakikolwiek sposób to zrobić, aby Twój kanał był dostępny przez http? – ostrokach