Lors de l'installation de packages dans requirements.txt à l'aide de Conda via la commande suivante
conda install --yes --file requirements.txt
Si un package dans requirements.txt n'est pas disponible, il renvoie une "Erreur de package" telle que celle illustrée ci-dessous:
Utilisation du site Api Anaconda Cloud https://api.anaconda.org
Récupération des métadonnées du package: ....
Erreur: Aucun paquet trouvé dans les canaux Linux-64 actuels correspondant: nimfa == 1.2.3
Vous pouvez rechercher ce package sur anaconda.org avec
anaconda search -t conda nimfa ==1.2.3
Au lieu de lancer une erreur, est-il possible de modifier ce comportement de sorte qu'il installe tous les packages disponibles dans requirements.txt et lève un avertissement pour ceux qui ne sont pas disponibles?
Je voudrais cela parce que, le package nimfa qui, selon l'erreur, n'est pas disponible, peut être installé par pip. Donc, si je peux changer le comportement de conda install --yes --file requirements.txt
pour simplement lancer un avertissement pour les paquets indisponibles, je peux le suivre avec la commande pip install -r requirments.txt
dans .travis.yml afin que TravisCI tente de l'installer à partir de n'importe quel endroit où il est disponible.
pip install
packages qui ne sont pas disponibles en utilisantconda install
, pendant l'itération?FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"
fonctionne très bien. Merci!while read req; do if [[ $req != "#"* ]]; then conda install --yes $requirement || pip install $requirement; fi; done < requirements.txt
Vous pouvez le faire comme mentionné dans ce
Exporter vers un fichier .yml
Reproduire:
la source
Pour ceux qui cherchent, j'ai utilisé ceci comme solution de @TillHoffmann pour la coquille de poisson:
$ while read requirement; conda install --yes $requirement; end < requirements.txt
Et
$ while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt
la source
La réponse de Pbms ici est la bonne façon de le faire, en supposant que vous ayez un environnement existant à copier. Conda est entièrement capable d'installer à la fois les packages Conda et les packages pip, comme indiqué dans
environment.yml
. Je voulais documenter l'ensemble du processus plus en détail. Notez que j'utilise des environnements basés sur des dossiers, c'est pourquoi j'ai ajouté--prefix [path to environment folder]
à la plupart des commandes.Supposons que vous ayez installé un environnement pour un projet existant dans un dossier appelé
env
dans le dossier actuel, comme ceci:Vous généreriez
environment.yml
pour l'environnement de ce projet comme ceci:Vous créeriez un nouvel environnement dans un autre dossier en copiant
environment.yml
là-bas, puis en l'exécutant à partir de là:Vous obtiendrez un environnement déjà existant pour correspondre
environment.yml
en copiantenvironment.yml
à nouveau là-bas, puis en l'exécutant à partir de là:Avec l'environnement en question actif, vous vérifieriez l'état de ses packages comme ceci:
Ceci est une version abrégée de ce que cette commande peut imprimer (notez que les packages pip sont marqués
pypi
):# Name Version Build Channel pip 19.2.2 py37_0 python 3.7.4 h5263a28_0 numpy 1.16.4 py37h19fb1c0_0 pandas 0.25.1 py37ha925a31_0 pyodbc 4.0.27 py37ha925a31_0 ibm-db 3.0.1 pypi_0 pypi ibm-db-sa 0.3.5 pypi_0 pypi
Enfin, il s'agit d'une version abrégée de ce à quoi
environment.yml
pourrait ressembler (notez que les packages pip sont répertoriés dans leur propre catégorie):dependencies: - pip=19.2.2=py37_0 - python=3.7.4=h5263a28_0 - numpy=1.16.4=py37h19fb1c0_0 - pandas=0.25.1=py37ha925a31_0 - pyodbc=4.0.27=py37ha925a31_0 - pip: - ibm-db==3.0.1 - ibm-db-sa==0.3.5
Sachez que l'utilisation simultanée de Conda et de pip peut provoquer des brûlures d'estomac, car elles peuvent sans le savoir souffler les dépendances mutuelles. Vous êtes censé installer tous vos packages Conda en premier, puis tous vos packages pip par la suite, plutôt que d'alterner entre les deux. Si votre environnement se brise, la recommandation officielle est de le supprimer et de le recréer (à partir de votre
environment.yml
fichier). Pour plus de détails, consultez ce guide:https://www.anaconda.com/using-pip-in-a-conda-environment/
la source