Hello,
depuis quelques jours je bloque sur la mise d'une petite appli en module. Par module je veux dire un dossier que l'on peut poser dans site-packages et utiliser en faisant un import appli.
Le problème est que ce n'est pas un simple script, mais un lot de 3 scripts qui s'appellent les uns les autres. J'ai bien sûr googlé et chatGPTé mais j'avoue que je n'ai pas compris grand chose... Quand l'import marche dans le fichier __init__, il ne marche pas dans l'appli et du coup il ne marche pas non plus dans un script externe qui voudrait utiliser l'appli.
J'ai fait un jeu de fichiers minimaliste pour décrire mon problème. Si quelqu'un peut m'orienter vers une façon de faire qui garderait mes 3 scripts ensemble sans les dispatcher dans de différents répertoires... j'ai joint un zip avec le jeu de fichiers pour reproduire le problème.
site-packages/lib/__init__.py
site-packages/lib/src/lib.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import lib import tools import constants
site-packages/lib/src/tools.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 from lib.src import tools from lib.src import constants def addDouble(value): return value + mul2(value)
site-packages/lib/src/constants.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 from lib.src.constants import * def mul2(value): return B * value
pour les appeler de façon "conventionnelle" avec le nom du module en préfixe,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 A = 1 B = 2 C = 3
quelque_par_sur_le_disque/dummy2.py
j'ai l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import lib if __name__ == "__main__": print(lib.addDouble(33)) # to test lib.py print(lib.mul2(3)) # to test tools.py print(lib.A) # to test constants.py
et pour finir si je ne veux par exemple que les constantes,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Traceback (most recent call last): File "/home/pfeuh/Documents/sources/python/test/dummy2.py", line 1, in <module> import lib File "/home/pfeuh/.local/lib/python3.10/site-packages/lib/__init__.py", line 2, in <module> import tools ModuleNotFoundError: No module named 'tools'
quelque_par_sur_le_disque/dummy.py
j'ai l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 from lib.constants import * print(A) # to test constants.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Traceback (most recent call last): File "/home/pfeuh/Documents/sources/python/test/dummy.py", line 1, in <module> from lib.constants import * File "/home/pfeuh/.local/lib/python3.10/site-packages/lib/__init__.py", line 2, in <module> import tools ModuleNotFoundError: No module named 'tools'
Partager