Je suis nouveau dans les paquets Python, et j'ai du mal à faire marcher quelque chose. J'ai 3 paquets: engine
, ui
et db
. Je voudrais utiliser db
à partir des deux autres paquets. Quelle est la bonne façon de le faire? Je ne voudrais pas installer le paquet db
, puisque je développe actuellement les 3 paquets en même temps.Importer un paquet commun à partir de deux autres paquets (python3)
Merci!
Pour le moment, je suis en train de le faire avec les importations de paquets de frères et soeurs, mais il suce tellement que je ne suis pas sûr que ce soit la bonne façon de le faire. Cette question est étroitement liée à des tonnes de questions telles que Relative imports in Python 3 ou ValueError: attempted relative import beyond top-level package, mais aucun d'entre eux a une valide, réponse travailler pour moi :-(
Voici ce que j'ai jusqu'à présent:
src/
__init__.py # empty file (is it useful?)
db/
__init__.py # empty file
constants.py
ui/
__init__.py # empty file
index.py
engine/
...some stuff...
ici est index.py:
from .. import db
print(db.constants.stuff)
Cependant, en cours d'exécution ou cd ui && python3 index.py
python3 -m index.py
échouent avec SystemError: Parent module '' not loaded, cannot perform relative import
Quand je tweak ce projet, je reçois parfois encore d'autres erreurs, comme ValueError: Attempted relative import in non-package
D'après ce que je lis sur https://docs.python.org/3/tutorial/modules.html, cela devrait fonctionner, devrait-il pas?
Qu'est-ce que je fais mal? Que dois-je faire pour (faire une chose si simple) utiliser un paquet commun de deux autres paquets?
Pouvez-vous partager toute la structure du projet en utilisant quelque chose comme 'tree'? Parce que l'information actuelle montre seulement un fichier réel par paquet. Peut-être que vous confondez les paquets et les modules? – Arunmozhi
Ceci est la structure actuelle, actuelle ('engine' est actuellement vide mais nécessitera éventuellement des choses de' db'). Donc oui, j'ai actuellement un module par paquet. Mais les paquets vont bientôt augmenter – Daladim