Considérant cette structure de projet :

project
  ...
   |-- view
        |-- __init__.py
        |-- app_view.py
        |-- component.py

Et ces importations et déclarations :

# __init__.py
from view.app_view import AppView
global APP_VIEW
APP_VIEW = AppView()


# app_view.py
from view.component import Component
class AppView:
    def __init__(self):
        self.component = Component()   


# component.py
from view import APP_VIEW
class Component:
   ...

ImportError : impossible d'importer le nom 'APP_VIEW'

C'est le message que j'ai reçu et je suppose qu'il y a quelque chose en rapport avec la structure d'importation cyclique, mais j'ai essayé d'autres organisations sans succès. Je me demandais donc comment résoudre cette situation.

  1. Quelle est la structure de fichier Pythonic pour les modules connexes comme celui-ci ?
  2. Comment dois-je stocker une variable globale pour pouvoir l'importer avec l'ensemble du projet ?
0
artu-hnrq 22 janv. 2020 à 22:02

1 réponse

Meilleure réponse

Oui, comme l'a dit @juanpa.arrivillaga, le problème réside dans vos importations circulaires/cycliques. Cette réponse explique en détail comment votre problème se produit. Cette question et réponse a un problème similaire au vôtre et a un rapide réparer.

Votre structure de fichier n'est pas le problème. Cependant, vous pouvez utiliser le modèle singleton, au lieu d'une variable globale, afin d'archiver ce vous voulez faire. Voici une comparaison dans les projets python de ces deux manières.

1
artu-hnrq 23 janv. 2020 à 00:02