@@ -50,6 +50,10 @@ def sin(x):
5050# 0.99999999
5151# 1.0
5252
53+
54+
55+ ### IMPORT ###
56+
5357# On peut importer juste une entity + PAS BESOIN de qualifier (nommer) le module pour s'en servir
5458from math import pi
5559from math import sin , pi
@@ -87,7 +91,7 @@ def sin(x):
8791# pas recommandé
8892
8993
90- ### aliasing : is giving any module and/or entity a name we prefer
94+ ## aliasing : is giving any module and/or entity a name we prefer
9195# or to avoid same names in the code even it coexists
9296
9397import math as boringstuff
@@ -102,7 +106,7 @@ def sin(x):
102106# from module import n as a, m as b, o as c
103107
104108
105- ### __pycache__/[modulename].cpython-[verMverm]
109+ ## __pycache__/[modulename].cpython-[verMverm]
106110# dans un dossier on place un module.py et un main.py
107111# lorsque module.py est importé dans main.py, cela engendre:
108112# la création d'un répertoire __pycache__
@@ -138,11 +142,56 @@ def addition(a, b):
138142# 8
139143
140144
145+
146+ ### PATH ###
141147### si les fichiers module et main sont dans des répertoires différents il faudra amender le PATH
142148# voir en fonction du besoin, OS, etc
143149
150+ #| Méthode | Fonctionne tout le temps ? | Explication |
151+ #| ---------------------------------- | -------------------------- | ------------------------------ |
152+ #| `path.append('../packages')` | ❌ Non | Dépend du dossier d'exécution |
153+ #| `path.append('C:/chemin/complet')` | ✅ Oui | Mais pas portable |
154+ #| `path.append(...) via __file__` | ✅ Oui | Recommandée et multiplateforme |
155+
156+
157+ import sys
158+ import os
159+ sys .path .append (os .path .abspath (os .path .join (os .path .dirname (__file__ ), '..' , 'packages' )))
160+
161+ !# Problem: je n'arrive pas à tester positivement l'insertion d'un zipfile dans le path
162+
163+
164+ #Python considère un dossier comme un package seulement s’il contient un fichier __init__.py
165+ #(même vide).
166+ #Si un dossier n’a pas ce fichier, Python ne peut pas l’interpréter comme un package Python,
167+ #donc il ne pourra pas importer les modules contenus dans ce dossier.
168+
169+ #Si on veut importer extra.good.best.sigma, alors les dossiers suivants
170+ #doivent contenir un __init__.py :
171+
172+ #packages/
173+ #├── extra/
174+ #│ ├── __init__.py ← Obligatoire ici
175+ #│ ├── iota.py
176+ #│ ├── good/
177+ #│ ├── __init__.py ← Obligatoire ici aussi
178+ #│ ├── best/
179+ #│ ├── __init__.py ← Obligatoire aussi
180+ #│ ├── sigma.py
181+ #│ ├── tau.py
182+ #Sans l’un de ces fichiers, l’import import extra.good.best.sigma va planter,
183+ #car Python ne pourra pas "traverser" ces dossiers comme packages.
184+
185+ #Depuis Python 3.3, il existe les namespace packages qui peuvent fonctionner
186+ #sans __init__.py en théorie.
187+ #Mais dans la pratique, surtout si on manipule des chemins personnalisés (comme avec sys.path.append),
188+ #ça peut poser problème.
189+ #Il vaut mieux mettre ces fichiers __init__.py pour garantir la compatibilité
190+ #et éviter les erreurs d’import.
191+
192+
144193
145- # dir("module")
194+ ### dir("module")
146195
147196## when WHOLE MODULE IS IMPORTED we can dir() it to know all functions contained in the module
148197## use alias if module has been aliased
0 commit comments