Combinando conda environment.yml con pip requirements.txt

107

Trabajo con entornos conda y también necesito algunos paquetes pip, por ejemplo, ruedas precompiladas de ~ gohlke .

Por el momento tengo dos archivos: environment.ymlpara conda con:

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

y requirements.txtpara pip que se puede usar después de activar el entorno de conda anterior:

# 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

¿Existe la posibilidad de combinarlos en un archivo (para conda)?

bastelflp
fuente
2
Hay una solicitud de extracción de GitHub para usar requirements.txt en conda. github.com/conda/conda-env/pull/172
OneCricketeer
3
conda env exportgenerará el texto para un .yml basado en los paquetes instalados actualmente.
Kenny

Respuestas:

132

Las dependencias de Pip se pueden incluir en el environment.ymlarchivo de esta manera ( documentos ):

# 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

También funciona para .whlarchivos en el mismo directorio (consulte la respuesta de Dengar ), así como con paquetes pip comunes.

bastelflp
fuente
3
¡Hizo bien! conda env create -f environment.yml, y el environment.ymlarchivo debe estar en el directorio actual, de lo contrario, se generarán errores extraños.
Johnny Zhang
38

También se puede usar requirements.txtdirectamente en el YAML. Por ejemplo,

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

Básicamente, cualquier opción con la que pueda ejecutarpip install se puede ejecutar en un YAML. Consulte el ejemplo de Pip avanzado para ver una muestra de otras capacidades.

merv
fuente
¿Qué -rsignifica? Mirando las opciones de la línea de comandos de pip ( aquí ) no hay una, -rpor lo que sería útil saber de dónde es (y si hay un --equivalente en formato largo)
dumbledad
3
Lo encontré, debería haber mirado las pip installopciones aquí . -res para el archivo de requisitos y el equivalente más largo es--requirement
dumbledad
¿Hay alguna forma de usar YAML sin conda? ¿O especifica la versión de Python que queremos en el archivo de requisitos?
Mez13
@ Mez13 por favor haga una nueva pregunta.
merv
13

Solo quiero agregar que agregar una rueda en el directorio también funciona. Recibí este error al usar la URL completa:

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

Terminé descargando la rueda y guardándola en el mismo directorio que el archivo yml.

name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  - opencv_python-3.1.0-cp35-none-win_amd64.whl
Dengar
fuente
2
Mencioné esto en la respuesta anterior.
bastelflp