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)?


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.


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.


¿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

2
Mencioné esto en la respuesta anterior.
bastelflp
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.