Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Gérer les dépendances d'un projet

+4 votes

Entre le setup.py, le requirements.txt et le tox.ini, j'ignore où placer mes dépendances, surtout quand certaines ne servent qu'aux tests, que d'autres ne sont pas disponibles via pip...

De plus, quand on travaille dans un environnement virtuel, avec pew en l'occurrence, des biliothèques sont installées par défaut et donc prises en compte dans le pip freeze.

Existe-t-il une méthode particulière pour gérer proprement les dépendances d'un projet ?

demandé 31-Jan-2015 par Vayel (1,050 points)

1 Réponse

+2 votes
 
Meilleure réponse

Pour éviter de mettre des dépéndances dans setup.py et les memes dans requirements.txt, je lis l'un avec l'autre en mettant dans setup.py :

import os
def strip_comments(l):
    return l.split('#', 1)[0].strip()

def reqs(*f):
    return list(filter(None, [strip_comments(l) for l in open(os.path.join(os.getcwd(), *f)).readlines()]))

install_requires = reqs('requirements.txt')

setup(
    name='mon projet',
    ...
    install_requires=install_requires 
)

Ensuite si j'ai à gérer des dépendances en fonction d'un environnement de dev ou de prod je mets sur la première ligne de mon requirements-dev.txt :

-r requirements.txt
moduleA==1.0.0
moduleB==2.0.0.

etc.

Ainsi pour mes dev je ferai un pip install -i requirements-dev.txt et pour ma production le classic pip install requirements.txt

edition

j'avais omit l'aspect des dépendances non présentes sur pypi, j'ajoute ici mon commentaire pour completer :

le projet papaye permet de gerer des installations à partir de modules locaux et absents de pypi

répondu 31-Jan-2015 par foxmask (2,888 points)
sélectionné 1-Fev-2015 par Vayel

Comment sont gérées les dépendances inaccessibles via pip ?

si le but est d'installer des modules "perso" et non publiés au public ; Il y a un projet nommé papaye qui fait ca très bien.

Qu'en est-il pour ceux destinés au public ?

si cest destiné au public alors on met sur pypi non ?

En effet, pardon. Je pensais à PyQt ou scipy, mais ils sont bien sur Pypi.

Aucun problème au moins ça clarifie les choses ;)

...