web-dev-qa-db-fra.com

Depuis conda, créez exigences.txt pour pip3

Bonjour, je me sers généralement de conda pour gérer mes environnements, mais je suis maintenant sur un projet qui nécessite un peu plus de puissance que mon ordinateur portable. J'essaie donc d'utiliser les stations de travail de mon université équipées de nouveaux processeurs Intel Xeons. Mais je n'ai pas de droits d'administrateur et le poste de travail n'a pas de conda, je suis donc obligé de travailler avec virtualenv et pip3.

Comment générer un requirements.txt de conda qui fonctionnera avec pip3 et venv?

conda list -e > requirements.txt

ne génère pas de fichier compatible:

= is not a valid operator. Did you mean == ?

La sortie conda est:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-64
certifi=2016.2.28=py36_0
cycler=0.10.0=py36_0
freetype=2.5.5=2
icu=54.1=0
libpng=1.6.30=1
matplotlib=2.0.2=np113py36_0
mkl=2017.0.3=0
numpy=1.13.1=py36_0
openssl=1.0.2l=0
pip=9.0.1=py36_1
pyparsing=2.2.0=py36_0
pyqt=5.6.0=py36_2
python=3.6.2=0
python-dateutil=2.6.1=py36_0
pytz=2017.2=py36_0
qt=5.6.2=2
readline=6.2=2
scikit-learn=0.19.0=np113py36_0
scipy=0.19.1=np113py36_0
setuptools=36.4.0=py36_1
sip=4.18=py36_0
six=1.10.0=py36_0
sqlite=3.13.0=0
tk=8.5.18=0
wheel=0.29.0=py36_0
xz=5.2.3=0
zlib=1.2.11=0

Je pensais que je changerais simplement tous les = à == mais il y a deux = dans la sortie conda. Lequel changer? Il y a sûrement un moyen plus facile?

MODIFIER: pip freeze > requirements.txt donne:

certifi==2016.2.28
cycler==0.10.0
matplotlib==2.0.2
matplotlib-venn==0.11.5
numpy==1.13.1
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.2
scikit-learn==0.19.0
scipy==0.19.1
six==1.10.0
15
ITA

Après la discussion, je voudrais mentionner que vous pouvez réellement voir une séparation des rôles pip et conda.

pip est un gestionnaire de paquets standard, il fait une chose et le fait bien. requirements.txt peut être généré dans un environnement et installé par pip dans un nouvel environnement.

Maintenant, il y a conda résultat: vous capturez à juste titre leur commentaire qui dit 'nous avons généré cette liste de bibliothèques pour travailler avec conda' . Notez que python lui-même est dans la liste des conda et pas (correctement) dans requirements.txt. conda réplique sa propre installation, c'est pourquoi sa liste de bibliothèques est plus longue et a python lui-même.

pip produit une liste de paquets qui ont été installés en plus de la bibliothèque standard pour que le paquet que vous avez écrit fonctionne. J'espère que cela aide à faire la distinction entre les deux.

De plus, pipenv est un outil plus récent, capable de gérer à la fois l’environnement virtuel et la gestion des paquets.

6
Evgeny

Juste au cas où quelqu'un cherche à générer des exigences.txt à partir d'un projet existant dans conda, utilisez la commande suivante

  • Accédez à l'environnement de votre projet conda activate <env_name>

  • conda listvous donne la liste des paquets utilisés pour l'environnement

  • conda list -e > requirements.txtenregistre toutes les informations sur les paquets dans votre dossier

  • conda env export > <env_name>.yml

  • pip freeze

0
Aishwat Singh

Comme l'indique le commentaire en haut, la sortie de

conda list -e > requirements.txt

peut être utilisé pour créer un environnement virtuel conda avec

conda create --name <env> --file requirements.txt

mais cette sortie n'est pas au bon format pour pip.

Si vous voulez un fichier que vous pouvez utiliser pour créer un environnement virtuel pip (c'est-à-dire un requirements.txt au bon format) vous pouvez installer pip dans l’environnement conda, l’utilisation de pip pour créer requirements.txt.

conda activate <env>
conda install pip
pip freeze > requirements.txt

Puis utilisez le résultat requirements.txt pour créer un environnement virtuel pip:

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt

Lorsque j'ai testé cela, les packages n'étaient pas identiques dans les sorties (pip incluaient moins de packages), mais cela suffisait pour configurer un environnement fonctionnel.

0
rmwenzel