web-dev-qa-db-fra.com

Comment installer les dépendances à partir d'un fichier pip copié dans un environnement virtuel?

Le problème survient lorsque je commence par cloner un projet git qui utilise pipenv, donc il a un Pipfile + Pipfile.lock. Je veux utiliser un environnement virtuel avec le projet, donc je lance pipenv Shell. J'ai maintenant un environnement virtuel créé et je suis à l'intérieur de l'environnement virtuel. Le projet a évidemment beaucoup de dépendances (répertoriées dans le Pipfile). Je ne veux pas avoir à parcourir la grande liste dans le Pipfile un par un et à les installer à l'aide de pipenv install <package_name>. Existe-t-il une commande pipenv/pip qui installe tous les packages à partir d'un fichier Pip que j'ai déjà? Ou peut-être que je dois configurer l'environnement différemment de l'exécution de pipenv Shell? Remarque: pip freeze ne renvoie rien.

8
Caleb Syring

La bonne réponse à cette question est que pipenv install ou pipenv install --dev (s'il existe des dépendances dev) doit être exécuté. Cela installera toutes les dépendances dans le Pipefile. Placer les dépendances dans un fichier requirements.txt puis utiliser pip fonctionnera mais ce n'est pas vraiment nécessaire. L'intérêt de l'utilisation de pipenv pour la plupart des utilisateurs est d'éviter la nécessité de gérer un fichier requirements.txt ou d'utiliser pip.

EDIT: si le virtualenv est déjà activé, vous pouvez également utiliser pipenv sync ou pipenv sync --dev pour le même effet.

13
Randy Syring

Idéalement, nous vous encourageons à avoir un requirements.txt fichier contenant tous les packages requis pour l'installation via pip. Vous pouvez créer ce fichier en faisant:

pip freeze > requirements.txt

Vous pouvez convertir un Pipfile et Pipfile.lock en un requirements.txt. Jetez un œil à cela

pipenv lock -r

Après cela, vous pouvez installer tous vos modules dans votre environnement virtuel python en procédant comme suit:

pip install -r requirements.txt

J'espère que j'ai répondu à votre question.

4

J'ai eu un problème similaire. Pour moi, j'ai quitté le virtualenv et j'ai couru

pipenv --three sync

et ça a marché.

D'après ce que je peux comprendre, l'idée est de créer un nouvel environnement virtuel en utilisant python 3 dans mon cas. Si vous utilisez python 2, la commande ci-dessus serait être édité pour lire

pipenv --two

La commande sync copie toutes les dépendances du Pipfile.lock sur le nouveau virtualenv.

1
miriad