Łączenie środowiska conda environment.yml z pip Requirements.txt

112

Pracuję ze środowiskami Conda i potrzebuję również pakietów pip, np. Wstępnie skompilowanych kół z ~ gohlke .

W tej chwili mam dwa pliki: environment.ymldla conda z:

# run: conda env create --file environment.yml
name: test-env
dependencies:
- python>=3.5
- anaconda

oraz requirements.txtdla pip, które mogą być używane po aktywacji środowiska powyżej conda:

# run: pip install -i requirements.txt
docx
gooey
http://www.lfd.uci.edu/~gohlke/pythonlibs/bofhrmxk/opencv_python-3.1.0-cp35-none-win_amd64.whl

Czy jest możliwość połączenia ich w jeden plik (dla conda)?

bastelflp
źródło
2
Istnieje żądanie ściągnięcia usługi GitHub dotyczące korzystania z Requirements.txt w stanie conda. github.com/conda/conda-env/pull/172
OneCricketeer
3
conda env exportwygeneruje tekst dla .yml na podstawie aktualnie zainstalowanych pakietów.
Kenny

Odpowiedzi:

140

Zależności Pip mogą być zawarte w environment.ymlpliku w następujący sposób ( dokumenty ):

# run: conda env create --file environment.yml
name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  # works for regular pip packages
  - docx
  - gooey
  # and for wheels
  - http://www.lfd.uci.edu/~gohlke/pythonlibs/bofhrmxk/opencv_python-3.1.0-cp35-none-win_amd64.whl

Działa również dla .whlplików w tym samym katalogu (zobacz odpowiedź Dengara ), jak również z popularnymi pakietami pip.

bastelflp
źródło
3
To się udało! conda env create -f environment.yml, a environment.ymlplik musi znajdować się w bieżącym katalogu, w przeciwnym razie zostanie wyrzucony dziwny błąd.
Johnny Zhang,
47

Można również użyć requirements.txtbezpośrednio w YAML. Na przykład,

name: test-env
dependencies:
  - python>=3.5
  - anaconda
  - pip
  - pip:
    - -r file:requirements.txt

Zasadniczo każda opcja, zpip install którą możesz uruchomić, może działać w YAML. Zobacz przykład zaawansowanego pipa, aby zobaczyć inne możliwości.

merv
źródło
Co to -roznacza? Patrząc na opcje wiersza poleceń pip ( tutaj ) nie ma, -rwięc warto wiedzieć, skąd pochodzi (i czy istnieje odpowiednik w --długiej formie)
dumbledad
3
Znalazłem to, powinienem był spojrzeć na pip installopcje tutaj . -rdotyczy pliku wymagań, a dłuższym odpowiednikiem jest--requirement
dumbledad
Czy istnieje sposób na użycie YAML bez conda? Lub określ wersję Pythona, którą chcemy, w pliku wymagań?
Mez13
@ Mez13 proszę zadać nowe pytanie.
merv
14

Chcę tylko dodać, że dodanie koła w katalogu również działa. Otrzymałem ten błąd podczas używania całego adresu URL:

HTTP error 404 while getting http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/opencv_python-3.1.0-cp35-none-win_amd64.whl

Skończyło się na pobraniu koła i zapisaniu go w tym samym katalogu, co plik yml.

name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  - opencv_python-3.1.0-cp35-none-win_amd64.whl
Dengar
źródło
2
Wspomniałem o tym w powyższej odpowiedzi.
bastelflp