1 pièce(s) jointe(s)
Transformer un jeu de scripts en module
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
Code:
1 2 3
| import lib
import tools
import constants |
site-packages/lib/src/lib.py
Code:
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/tools.py
Code:
1 2 3
| from lib.src.constants import *
def mul2(value):
return B * value |
site-packages/lib/src/constants.py
pour les appeler de façon "conventionnelle" avec le nom du module en préfixe,
quelque_par_sur_le_disque/dummy2.py
Code:
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 |
j'ai l'erreur
Code:
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' |
et pour finir si je ne veux par exemple que les constantes,
quelque_par_sur_le_disque/dummy.py
Code:
1 2
| from lib.constants import *
print(A) # to test constants.py |
j'ai l'erreur
Code:
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' |