Skip to content

Commit 7426240

Browse files
committed
27052025-3
1 parent 8137d0e commit 7426240

2 files changed

Lines changed: 52 additions & 3 deletions

File tree

‎Module.py‎

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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
5458
from math import pi
5559
from 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

9397
import 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

‎pip.py‎

Whitespace-only changes.

0 commit comments

Comments
 (0)