<p>pipenv ne respecte pas le virtualenv actuellement activé et crée un nouvel env</p>

Créé le 2 nov. 2017  ·  3Commentaires  ·  Source: pypa/pipenv

Pas très sûr que ce soit un comportement attendu, mais du point de vue de l'utilisation, cela semble être un bogue :

Problème:

pipenv install <package_name> crée un nouveau virtualenv même si le virtualenv est activé à l'aide de pipenv shell .

Quand se produit-il :

si nous ne sommes pas dans le même répertoire où se trouve Pipfile .

Décrivez votre environnement

  1. Type de système d'exploitation : Linux (Ubuntu 16.04)
  2. Version Python : $ python -V == 3.6.3
  3. Version Pipenv : $ pipenv --version == version 8.3.1

Résultat attendu

Si nous sommes dans un shell virtualenv activé, (indépendamment du pwd ) pipenv install doit le respecter et mettre à jour correctement le Pipfile et ne doit pas créer un nouveau Pipfile .

Résultat actuel

Un nouveau Pipfile est créé, même s'il se trouve dans le même virtualenv activé mais dans un répertoire différent.

Étapes à reproduire

$ mkdir -p testproject/app
$ cd  testproject/app
$ pipenv install flask
$ pipenv shell # environment gets activated here
$ <my_new_environment>$  cd ..  # Now we are inside testproject
$ pipenv install requests
$ New Pipfile gets created here

Commentaire le plus utile

@erinxocon Et c'est

@kennethreitz l'a dit lui-même sur la page d'accueil de pipenv :

Vous n'avez plus besoin d'utiliser pip et virtualenv séparément. Ils travaillent ensemble.

pipenv est censé non seulement créer le virtualenv, comme vous l'avez dit, mais aussi le gérer . Encore une fois, c'est mentionné explicitement sur la page d'accueil (c'est moi qui souligne) :

Il crée et gère automatiquement un environnement virtuel pour vos projets, ainsi qu'ajoute/supprime des packages de votre Pipfile lorsque vous installez/désinstallez des packages.

Autrefois, lorsque nous utilisions virtualenv et pip séparément, nous pouvions naviguer vers n'importe quel répertoire et pip install , et le package serait correctement installé dans virtualenv, le fait que pipenv ne le fasse pas _pendant qu'un pipenv -managed virtualenv is enabled_ brise les attentes des utilisateurs.

Tous les 3 commentaires

Salut @ansrivas ! Ce n'est pas le flux prévu de pipenv. Pipenv utilisera un environnement virtuel s'il s'y trouve initialement, mais pas lors de tous les appels suivants. Vous auriez un nid assez poilu de virtualenvs ! Si vous accédez à un dossier en dehors du projet, pipenv créera un nouveau pipfile. Si vous souhaitez simplement installer des packages en dehors du dossier, mais à l'intérieur de l'environnement virtuel que vous avez activé dans le sous-shell, vous pouvez faire pipenv shell puis pip install requests . Pipenv peut être utilisé pour créer un virtualenv pour votre projet, mais ce n'est pas en soi un gestionnaire de virtualenv, c'est un gestionnaire de projet.

@erinxocon Et c'est

@kennethreitz l'a dit lui-même sur la page d'accueil de pipenv :

Vous n'avez plus besoin d'utiliser pip et virtualenv séparément. Ils travaillent ensemble.

pipenv est censé non seulement créer le virtualenv, comme vous l'avez dit, mais aussi le gérer . Encore une fois, c'est mentionné explicitement sur la page d'accueil (c'est moi qui souligne) :

Il crée et gère automatiquement un environnement virtuel pour vos projets, ainsi qu'ajoute/supprime des packages de votre Pipfile lorsque vous installez/désinstallez des packages.

Autrefois, lorsque nous utilisions virtualenv et pip séparément, nous pouvions naviguer vers n'importe quel répertoire et pip install , et le package serait correctement installé dans virtualenv, le fait que pipenv ne le fasse pas _pendant qu'un pipenv -managed virtualenv is enabled_ brise les attentes des utilisateurs.

Je suis d'accord avec @ksze sur ce point.

On s'attend à ce que pipenv gère le virtualenv actif.

Dans le même ordre d'idées... Je devrais pouvoir utiliser le -r pour installer un Pipfile ou Pipenv.lock externe dans le virtualenv actuel, et ne pas en créer un autre.

Cette page vous a été utile?
0 / 5 - 0 notes