Combinaison de conda environment.yml avec pip requirements.txt

107

Je travaille avec des environnements conda et j'ai aussi besoin de quelques packages pip, par exemple des roues pré-compilées de ~ gohlke .

Pour le moment, j'ai deux fichiers: environment.ymlpour conda avec:

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

et requirements.txtpour pip qui peut être utilisé après l'activation de l'environnement conda ci-dessus:

# 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

Est-il possible de les combiner dans un seul fichier (pour conda)?

Bastelflp
la source
2
Il existe une requête d'extraction GitHub pour utiliser requirements.txt dans conda. github.com/conda/conda-env/pull/172
OneCricketeer
3
conda env exportgénérera le texte d'un .yml basé sur les packages actuellement installés.
Kenny

Réponses:

132

Les dépendances de pip peuvent être incluses dans le environment.ymlfichier comme ceci ( 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

Cela fonctionne également pour les .whlfichiers dans le même répertoire (voir la réponse de Dengar ) ainsi qu'avec les packages pip courants.

Bastelflp
la source
3
Ça a bien marché! conda env create -f environment.yml, et le environment.ymlfichier doit être dans le répertoire courant, sinon, il sera jeté des erreurs étranges.
Johnny Zhang
39

On peut également utiliser le requirements.txtdirectement dans le YAML. Par exemple,

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

Fondamentalement, toute option avec laquellepip install vous pouvez exécuter peut être exécutée dans un YAML. Voir l'exemple Advanced Pip pour une présentation d'autres fonctionnalités.

merv
la source
Qu'est-ce que cela -rsignifie? En regardant les options de ligne de commande de pip ( ici ), il n'y en a pas -r, il serait donc utile de savoir d'où cela vient (et s'il existe un --équivalent long)
dumbledad
3
Je l'ai trouvé, j'aurais dû regarder les pip installoptions ici . -rest pour le fichier d'exigence et l'équivalent le plus long est--requirement
dumbledad
Existe-t-il un moyen d'utiliser le YAML sans conda? Ou spécifiez la version de python souhaitée dans le fichier des exigences?
Mez13
@ Mez13 veuillez poser une nouvelle question.
merv
13

Je veux juste ajouter que l'ajout d'une roue dans le répertoire fonctionne également. J'obtenais cette erreur lors de l'utilisation de l'URL entière:

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

Fini par télécharger la roue et l'enregistrer dans le même répertoire que le fichier yml.

name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  - opencv_python-3.1.0-cp35-none-win_amd64.whl
Dengar
la source
2
J'ai mentionné cela dans la réponse ci-dessus.
bastelflp