从模块导入全局变量

时间:2020-01-22 19:02:17

标签: python import global-variables python-import global

考虑此项目结构:

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

这些导入和声明:

# __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:无法导入名称“ APP_VIEW”

这是我一直在收到的消息,我想这与循环导入结构有关,但是我尝试了其他一些组织,但都没有成功。所以我想知道如何解决这种情况。

  1. 此类相关模块的Pythonic文件结构是什么?
  2. 我应该如何存储全局变量以便能够将其与整个项目一起导入?

1 个答案:

答案 0 :(得分:1)

是的,正如@ juanpa.arrivillaga所说,问题出在您的循环/循环进口中。 This answer详细说明了您的问题是如何发生的。 This question and answer与您有类似的问题,并且有快速解决方法。

您的文件结构不是问题。但是,可以使用singleton pattern而不是全局变量来存档要执行的操作。 Here is a comparison in python projects of these two ways

相关问题