Combinazione di conda environment.yml con pip requirements.txt


107

Lavoro con ambienti conda e ho bisogno anche di alcuni pacchetti pip, ad esempio ruote precompilate da ~ gohlke .

Al momento ho due file: environment.ymlper conda con:

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

e requirements.txtper pip che può essere utilizzato dopo l'attivazione dell'ambiente sopra 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

C'è la possibilità di combinarli in un unico file (per conda)?


2
Esiste una richiesta pull GitHub per l'utilizzo di requirements.txt in conda. github.com/conda/conda-env/pull/172
OneCricketeer

3
conda env exportgenererà il testo per un .yml in base ai pacchetti attualmente installati.
Kenny

Risposte:


132

Le dipendenze Pip possono essere incluse nel environment.ymlfile in questo modo ( docs ):

# 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

Funziona anche per i .whlfile nella stessa directory (vedi la risposta di Dengar ) così come con i comuni pacchetti pip.


3
Ha funzionato bene! conda env create -f environment.yml, e il environment.ymlfile deve essere nella directory corrente, altrimenti verranno generati strani errori.
Johnny Zhang

38

Si può anche usare requirements.txtdirettamente nello YAML. Per esempio,

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

Fondamentalmente, qualsiasi opzione conpip install cui puoi correre puoi correre in uno YAML. Vedi l'esempio di pip avanzato per una dimostrazione di altre funzionalità.


Cosa -rsignifica? Guardando le opzioni della riga di comando di pip ( qui ) non c'è un -rquindi sarebbe utile sapere da dove proviene (e se esiste un --equivalente in forma lunga)
silente

3
Trovato, avrei dovuto esaminare le pip installopzioni qui . -rè per il file dei requisiti e l'equivalente più lungo è--requirement
silente

C'è un modo per utilizzare lo YAML senza conda? O specificare la versione di python che vogliamo nel file dei requisiti?
Mez13

@ Mez13 per favore fai una nuova domanda.
merv

13

Voglio solo aggiungere che anche l'aggiunta di una ruota nella directory funziona. Ho ricevuto questo errore durante l'utilizzo dell'intero URL:

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

Ho finito per scaricare la ruota e salvarla nella stessa directory del file yml.

name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  - opencv_python-3.1.0-cp35-none-win_amd64.whl

2
Ne ho parlato nella risposta sopra.
bastelflp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.