91 votes

Comment puis-je spécifier les versions des bibliothèques dans le fichier setup.py ?

Dans mon setup.py j'ai spécifié quelques bibliothèques nécessaires à l'exécution de mon projet :

setup(
    # ...
    install_requires = [
        'django-pipeline',
        'south'
    ]
)

Comment puis-je spécifier les versions requises de ces bibliothèques ?

137voto

Adam Wagner Points 7232

Je ne suis pas sûr pour buildout, cependant, pour setuptools/distribute, vous spécifiez les informations de version avec les opérateurs de comparaison (comme == , >= ou <= ).

Par exemple :

install_requires = ['django-pipeline==1.1.22', 'south>=0.7']

1 votes

Pour mieux comprendre le setup.py lire les documents

0 votes

Je connais setup.py avec distutils/setuptools/distribute, est-ce que buildout l'utilise aussi ? Je ne l'ai jamais utilisé auparavant, et je ne savais pas pourquoi l'OP mentionnait buildout.

4 votes

La construction honore le install_requires entrée des paquets, y compris les exigences de version. Il utilise setuptools sous le capot pour cela.

1voto

Gal Bracha Points 1360

Vous pouvez les ajouter à votre requirements.txt avec la version.

Par exemple :

django-pipeline==1.1.22
south>=0.7

et ensuite dans votre setup.py

import os
from setuptools import setup

with open('requirements.txt') as f:
    required = f.read().splitlines()

setup(...
install_requires=required,
...)

Lecture de la documentation -

Il n'est pas considéré comme une bonne pratique d'utiliser install_requires pour épingler des dépendances à des versions spécifiques, ou pour spécifier des sous-dépendances (c'est-à-dire les dépendances de vos dépendances). Ceci est excessivement restrictif et empêche l'utilisateur de bénéficier des mises à jour de dépendances mises à jour.

https://packaging.python.org/discussions/install-requires-vs-requirements/#id5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X