Je travaille sur un projet python qui contient deux modules. Les modules sont très étroitement liés et donc je veux qu'ils soient dans le même git, et pour pouvoir les développer ensemble dans mon IDE:Python - setuptools - travailler sur deux paquets dépendants (dans un seul repo?)
module1
dépend demodule2
module1
a beaucoup d'autres lourds dépendances, module2 nemodule1
etmodule2
seront utilisés dans différents environnements d'exécutionmodule2
devrait être installable séparément afin qu'il puisse fonctionner en exemple une AWS Lambda
Par conséquent, j'ont essayé de mettre en place une structure de projet qui contient les deux modules dans deux dossiers dans une pension, chaque dossier comportant un setup.py
afin qu'il puisse emballer. Est-ce une approche raisonnable?
\module1
setup.py
\module1
__init__.py
[scripts].py
\module2
setup.py
\module2
__init__.py
[scripts].py
La structure ci-dessus devrait me permettre de travailler sur le projet traitant localement module2
comme module régulier, mais le fichier setup.py
signifie qu'il peut être distribué comme son propre paquet, non?
Le problème est que je ne peux pas comprendre la dépendance module2
dans l » setup.py
module1
:
from setuptools import setup
setup(
name="module1",
version="0.1",
packages=['module1'], # I really need to include module2 scripts here, right?...
install_requires=['pandas', 'numpy', ...]
)
Quelqu'un at-il des conseils sur la façon d'aborder ce problème? Les deux solutions que je peux deviner sont:
- Emballage et publication
module2
sur son propre avant selon elle demodule1
. Cela rend le développement beaucoup plus inflexible - Imbrication au sein de
module1
donc je peux l'inclure dans l'argumentpackages
à la fonctionsetup(...)
. Cela brise la clarté quemodule1
devrait traitermodule2
comme si elle était essentiellement une dépendance externe ...
Merci @Rubbal. Donc, si je devais utiliser deux repos distincts et le mode de développement setuptools, comment pourrais-je déclarer la dépendance de 'module1' sur' module2' dans 'setup.py'? Je comprends en utilisant 'pip -e [path]', mais quel est l'équivalent dans 'setup.py'? – rjmurt
Vous l'ajouterez simplement à 'install_requires' (j'avais l'habitude de garder une condition.txt afin que je puisse directement installer toutes les exigences tout en développant. Dans setup.py, j'analyserais le requirements.txt et j'ajouterais ceux-ci à install_requires) – Rubbal
Je pense que c'est probablement la bonne réponse (bien que je n'ai jamais eu 'install_requires' fonctionnant correctement). Je suppose que ma question est vraiment de savoir s'il existe/devrait y avoir un mécanisme pour construire plus d'un paquet de style PyPI à partir d'un seul ensemble de code. Il semble que l'utilisation de setuptools pour l'étape de construction n'est pas si flexible ... – rjmurt