J'ai un gros projet Python 3.7+ et je suis actuellement en train de le diviser en plusieurs packages qui peuvent être installés séparément. Ma pensée initiale était d'avoir un seul référentiel Git avec plusieurs packages, chacun avec son propre setup.py. Cependant, en faisant des recherches sur Google, j'ai trouvé des gens suggérant un référentiel par package: (par exemple, Python - setuptools - travaillant sur deux packages dépendants (dans un seul référentiel?) ) Cependant, personne ne fournit une bonne explication pour expliquer pourquoi ils préfèrent une telle structure.
Donc, ma question est la suivante:
De plus, je suis conscient (et corrigez-moi si je me trompe) que setuptools permet désormais d'installer des dépendances à partir des dépôts GitHub, même si l'URL GitHub de setup.py n'est pas à la racine du référentiel.
Je recherche moi-même le même problème. La documentation de PyPa recommande la mise en page décrite dans le sous-répertoire "natif" de: https://github.com/pypa/sample-namespace-packages
Je trouve la structure de package unique décrite ci-dessous, très utile, voir la discussion autour du test de la version "installée". https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-structure Je pense que cela peut être étendu à plusieurs packages. Publiera au fur et à mesure que j'apprends.
Un aspect est couvert ici https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support
En particulier, si setup.py ne se trouve pas dans le répertoire racine, vous devez spécifier le sous-répertoire où trouver setup.py dans la commande pip install.
Donc, si la disposition de votre référentiel est:
- pkg_dir /
- setup.py # setup.py pour le package pkg
- some_module.py
- other_dir /
- un_fichier
- some_other_file
Vous devrez utiliser pip install -e vcs + protocol: // repo_url/# Egg = pkg & subdirectory = pkg_dir.