web-dev-qa-db-fra.com

Pourquoi les numéros de version ne devraient-ils pas être épinglés dans un fichier Pipfile?

Je cherche à utiliser pipenv et dans les documents ici
https://pipenv.readthedocs.io/en/latest/basics.html#importing-from-requirements-txt

ça dit (c'est moi qui souligne)

Notez que lors de l'importation d'un fichier d'exigences, ils ont souvent des numéros de version épinglés, ce que vous ne voudrez probablement pas

Pourquoi est-ce?

Je comprends que le fichier Pipfile.lock stockera les versions spécifiques et les hachages des dépendances que j'installe, mais je ne veux pas pouvoir voir les versions spécifiques de ce qui est installé dans Pipfile? (De la même manière que j'utilise un fichier requirements.txt?)

16
w--

Les docs sont assez avisés sur la raison probable pour laquelle vous avez épinglé des versions sur votre fichier d'exigences: il provient probablement de pip freeze > requirements.txt.

Bien sûr, vous voudrez spécifier certaines ou toutes les plages de versions dans votre Pipfile, c'est juste que beaucoup de gens les ont épinglées dans le requirements.txt parce qu'ils le traitaient comme une sorte de Pipfile.lock, spécifiant des versions de packages qui ne sont même pas des dépendances directes. Naturellement, si vous n'avez pas suivi cette pratique, vous n'avez pas à vous soucier de cet avertissement.

C'est très probablement le résultat de Kenneth Reitz (créateur de Pipenv) lui-même qui l'a fait précédemment, comme mentionné dans son blog A Better Pip Workflow . Des éclaircissements à ce sujet ont déjà été demandés et répondus par lui dans le dossier officiel dépôt .

MISE À JOUR JUIN 2018

Ce message était également imprimé comme avertissement par la commande pipenv, mais il a été remplacé par

requirements.txt found, instead of Pipfile! Converting…
Warning: Your Pipfile now contains pinned versions, if your requirements.txt did.
We recommend updating your Pipfile to specify the "*" version, instead.

Un peu plus convivial, mais je pense que cela signifie toujours implicitement que l'épinglage des versions sur Pipfile n'est pas idéal, ce qui n'est pas vrai. C'est parfaitement bien.

8
villasv

Je ne suis pas sûr de ce qu'était le cas auparavant, cependant, la dernière documentation dit que vous pouvez spécifier le numéro de version d'un package lorsque vous l'installez, comme ceci:

pipenv install requests==2.13.0

Cela mettra également à jour le package dans votre Pipfile pour inclure le numéro de version, qui ressemble à ceci:

requests = "==2.13.0"

Vous pouvez le faire pour chacun des packages pour lesquels vous souhaitez spécifier des numéros de version, y compris si vous les avez déjà installés.

Je pense que vous pourrez peut-être modifier manuellement votre Pipfile pour ce faire, même si je ne suis pas sûr que ce soit correct.

6
dspacejs

ne veux-je pas pouvoir voir les versions spécifiques de ce qui est installé dans le Pipfile?

Le fichier de verrouillage sert à suivre ce qui est réellement installé et est la clé pour générer des builds déterministes. Pipfile.lock est destiné à être engagé dans un projet avec le Pipfile. Il y a aussi la vue qu'un workflow idéal est d'utiliser "pipenv lock pour compiler vos dépendances sur votre environnement de développement et déployer le Pipfile.lock compilé dans tous vos environnements de production pour des builds reproductibles."

Certaines versions que vous voudrez spécifier dans Pipfile. Par exemple, toutes les versions de Django en dessous d'une certaine version majeure sont probablement une bonne idée.

Comprenez également que pour l'instant, pipenv est toujours en développement actif, donc certaines de ces idées sont toujours en cours d'élaboration. Il est possible qu'il y ait des changements.

2
Hemm