Salut,
En simplifiant au maximum mon souci, voici l’organisation d’un micro projet :
main.py
operations /
__init__.py
addition.py
soustraction.py
Ce que j’essaye de faire : premièrement, je veux pouvoir exécuter main.py
(le projet global), puis deuxièmement aller dans soustraction.py
et l’exécuter pour le tester séparément (sans changer une ligne de code entre ces deux manips).
Maintenant, voici donc le code de mes trois petits fichiers :
#main.py :
import operations.addition
import operations.soustraction
a = operations.addition.add(1, 2)
print(a)
#addition.py :
def add(a, b):
return a + b
#soustraction.py :
from .addition import add
def sous(a, b):
return add(a, -b)
#pour tester ce module en l'exécutant mais pas à l'importation :
if __name__ == '__main__':
test = sous(2, 1)
print(test)
Voilà le soucis : quand j’exécute main.py
, ça marche parfaitement ! youpi !
Et quand je vais dans soustraction.py
, pour l’exécuter, patatra
File "C:\Users\rmarchand\Desktop\operations\soustraction.py", line 1, in <module>
from .addition import add
ImportError: attempted relative import with no known parent package
Bon comme je suis attentif au cours, je m’y attendais un peu
Seulement voilà, quand je change la ligne d’import de soustraction.py
en from addition import add
(sans le .
!), je peux maintenant exécuter mon module soustraction sans problème, mais maintenant je ne peux plus exécuter le module main.py
:
File "C:\Users\rmarchand\Desktop\main.py", line 2, in <module>
import operations.soustraction
File "C:\Users\rmarchand\Desktop\operations\soustraction.py", line 1, in <module>
from addition import add
ModuleNotFoundError: No module named 'addition'
Me voilà coincé. Y a-t-il un moyen 'simple' de pallier à ce problème ? Quelle ligne d’import 'simple' puis-je mettre en tête de soustraction.py
pour pouvoir exécuter main.py
et soustraction.py
sans avoir à modifier de lignes entre les deux exécutions ?
En espérant avoir été super clair, merci d’avance…