Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Package et références internes et externes

1 réponse
Avatar
Francois Lafont
Bonjour à tous,

Supposons que j'ai cette arborescence :

#--------------------------
dossier/
|-- main.py
|-- myPackage/
| |-- dossier1/
| | |-- __init__.py
| | |-- __init__.pyc
| | |-- m1.py
| | `-- m1.pyc
| |-- dossier2/
| | |-- __init__.py
| | |-- __init__.pyc
| | |-- m2.py
| | `-- m2.pyc
| |-- __init__.py
| `-- __init__.pyc
`-- package2/
# On image que lui aussi contient plein de fichiers etc.
#--------------------------

Dans le module m2.py, je peux faire référence au module m1.py :

a. soit par « from myPackage.dossier1 import m1 »
b. soit par « from ..dossier1 import m1 »

Les deux marchent très bien mais hélas je ne peux pas exécuter m2.py
lui-même pour y faire des tests. Je m'explique. Quand j'édite m2.py,
j'aime bien pouvoir le tester directement (et au fur et à mesure) via un
simple « python m2.py » et en mettant en fin de fichier :

if __name__ == '__main__':
# là je mets des petits tests par-ci par-là

Seulement, quand j'exécute m2.py, à cause de ma référence interne (que
ce soit avec la version a. ou la b.), ça plante tout le temps.

Q1 : Comment faire pour faire mes tests sans que cela plante tout le temps ?

Dans le cas a. j'ai « ImportError: No module named myPackage.dossier1 »,
ok c'est normal. Dans le cas b. (celui-là étant donné que la référence
est relative, j'y croyais) j'ai « ValueError: Attempted relative import
in non-package ».

Enfin pour finir :
Q2 : comment peut-on faire un import du package "package2" dans un
module de myPackage, par exemple dans m2.py ?

Merci pour votre aide.


--
François Lafont

1 réponse

Avatar
Francois Lafont
Bonjour,

Comme on est en période de rentrée, je me dis que mon fil aura peut-être
un peu plus de succès. C'est surtout la question 2 qui m'intéresse.

Le 26/08/2011 03:53, Francois Lafont a écrit :

Supposons que j'ai cette arborescence :

#--------------------------
dossier/
|-- main.py
|-- myPackage/
| |-- dossier1/
| | |-- __init__.py
| | |-- __init__.pyc
| | |-- m1.py
| | `-- m1.pyc
| |-- dossier2/
| | |-- __init__.py
| | |-- __init__.pyc
| | |-- m2.py
| | `-- m2.pyc
| |-- __init__.py
| `-- __init__.pyc
`-- package2/
# On image que lui aussi contient plein de fichiers etc.
#--------------------------

Enfin pour finir :
Q2 : comment peut-on faire un import du package "package2" dans un
module de myPackage, par exemple dans m2.py ?



Merci d'avance.


--
François Lafont