Bonjour, j'ai travaille depuis plusieurs années avec C#/.NET et là je suis sur un gros projet qui va se développer en python (3.5).
Je n'arrive pas à utiliser et organiser ma solution. (notament définir des classe de base ou abstraites dans des fichiers qui seront importés depuis d'autres fichier pour être hérité, etc... ce genre de chose.
Voilà j'aimerais avoir comme arborescence pour mon projet:
De ce que j'ai compris de la doc, à partir du moment où la commande "python3" est exécuté depuis le répertoire racine /src, tout devrait se dérouler sans problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 /src - main.py - common.py - package_a/ - - common_a.py - - module_a1.py - - module_a2.py - package_b ...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 # main.py from package_a import * c = MyClassA() # package_a/__init__.py __ALL__ = ["common_a", "module_a1"] # package_a/common_a.py class MyBaseClassA(): def salut(self): print("MyBaseClassA from package_a.common_a") #package_a/module_a1.py from common_a import * class MyClassA(MyBaseClassA): def salut(self): print("MyClassA from module_a1 who inherits from MyBaseClassA defined in package_a.common_a")
Déjà, est-ce que ça vous parait être une bonne structure pour un projet python ?
Premier point qui bloque, j'ai beau mettre des __init__.py à la racine de mes dossiers packages, en spécifiant __ALL__ = [...], l'instruction suivante (dans main.py)
ne retourne pas d'erreur, mais rien n'est importé... quand je veux instancier une classe qui est définie dans le module A1 par exemple, il me dit que cette classe n'existe pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part from packageA import *
Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $ ls common.py main.py package_a __pycache__ $ ipython3 Python 3.5.2 (default, Jul 5 2016, 12:43:10) IPython 2.4.1 In [1]: from package_a import * In [2]: MyBaseClassA --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-71217d01a55b> in <module>() ----> 1 MyBaseClassA NameError: name 'MyBaseClassA' is not defined In [8]: from package_a.common_a import * In [9]: MyBaseClassA Out[9]: package_a.common_a.MyBaseClassA
Qu'est-ce qu'il faut faire pour que le import * fonctionne correctement ?
Partager