web-dev-qa-db-fra.com

Python doit-il spécifier la version?

J'ai un fichier requirements.txt pour une base de code Python. Le fichier a tout spécifié:

pytz==2017.2
requests==2.18.4
six==1.11.0

J'ajoute un nouveau package. Dois-je lister sa version? Si oui, comment choisir une version à spécifier?

17

Consultez le pip docs pour plus d'informations, mais fondamentalement, vous n'avez pas besoin de spécifier une version. Cela peut éviter les maux de tête, car la spécification d'une version vous permet de garantir que vous ne vous retrouverez pas dans l'enfer des dépendances.

Notez que si vous créez un package à déployer et à installer par pip, vous devez utiliser les métadonnées requises pour l'installation au lieu de vous fier à requirements.txt.

De plus, c'est une bonne idée de prendre l'habitude d'utiliser des environnements virtuels pour éviter les problèmes de dépendance, en particulier lors du développement de vos propres trucs. Anaconda offre une solution simple avec le conda create et virtualenv fonctionne très bien avec virtualenvwrapper pour une solution plus légère. Une autre solution, pipenv , est assez populaire.

12
Engineero

La spécification d'une version n'est pas une exigence bien qu'elle aide beaucoup à l'avenir. Certaines versions de packages ne fonctionneront pas correctement avec d'autres packages et leurs versions respectives. Il est difficile de prédire comment les changements futurs affecteront ces relations. C'est pourquoi il est très bénéfique de créer un instantané dans le temps (dans votre requirements.txt) montrant les interrelations de version qui fonctionnent.

Pour créer un fichier requirements.txt comprenant les versions des packages que vous utilisez, procédez comme suit. Dans votre console/terminal cd à l'emplacement où vous souhaitez que votre exigence.txt soit et entrez:

pip freeze > requirements.txt

Cela générera automatiquement un fichier requirements.txt comprenant les packages que vous avez installés avec leurs versions respectives.

Un conseil - vous devriez viser à utiliser un environnement virtuel pour chaque projet individuel sur lequel vous travaillerez. Cela crée une "bulle" dans laquelle vous pouvez travailler et installer des versions de packages spécifiques sans affecter vos autres projets. Cela vous évitera beaucoup de maux de tête à l'avenir, car vos packages et versions resteront spécifiques au projet. Je suggère d'utiliser environnement virtuel Anacondas .

6
Tom Mac

Non, il n'est pas nécessaire de spécifier une version. C'est probablement une bonne idée d'en spécifier un, cependant.

Si vous souhaitez spécifier une version mais que vous ne savez pas quelle version spécifier, essayez d'utiliser pip freeze, qui affichera une liste de tous les packages que vous avez actuellement installés et quelles sont leurs versions.

3
Daniel Pryden