【问题标题】:Circular import error in CSMS implementationCSMS 实现中的循环导入错误
【发布时间】:2023-03-13 23:09:01
【问题描述】:

我正在为 python 中无限数量的 Charge Points 构建一个 CSMS,我面临一个循环导入问题。

我的项目主要分为运行服务器脚本(server.py)和几个模块,分别对应不同类型的Charge Points。我有 3 种不同类型的充电点对象,这是因为根据安装和客户要求,每个充电点的方法、变量和行为都不同。 在其中一种情况下,我需要调用一个函数,该函数使用模块 (business_cp.py) 中的对象方法内部的已连接充电点队列。这个队列(包含所有类型的 Charge Points 对象)是另一个 CentralSystem 类型对象的属性,它在另一个模块中定义。

我的方法是将此对象设为全局并将其导入模块 business_cp.py。但我面临一个循环导入错误:

Traceback (most recent call last):
  File "c:\Users\sydea\Desktop\Cargadores solares\Proyecto\OCPP-1.6J-CS-I\server.py", line 15, in <module>
    from lib.business_cp import BusinessChargePoint, business_load_balancing, ACTIVE_CHARGING_SESSION_CHARGERS, BUSINESS_INSTALATION_METER_VALUES
  File "c:\Users\sydea\Desktop\Cargadores solares\Proyecto\OCPP-1.6J-CS-I\lib\business_cp.py", line 18, in <module>
    from server import CSMS
  File "c:\Users\sydea\Desktop\Cargadores solares\Proyecto\OCPP-1.6J-CS-I\server.py", line 15, in <module>
    from lib.business_cp import BusinessChargePoint, business_load_balancing, ACTIVE_CHARGING_SESSION_CHARGERS, BUSINESS_INSTALATION_METER_VALUES
ImportError: cannot import name 'BusinessChargePoint' from partially initialized module 'lib.business_cp' (most likely due to a circular import) (c:\Users\sydea\Desktop\Cargadores solares\Proyecto\OCPP-1.6J-CS-I\lib\business_cp.py)

请注意,我还将一些变量和函数从 business_cp.py 导入到 server.py 中

在 server.py 中导入并创建 CSMS

from lib.business_cp import BusinessChargePoint, business_load_balancing, ACTIVE_CHARGING_SESSION_CHARGERS, BUSINESS_INSTALATION_METER_VALUES

# GLOBAL VARIABLES
CSMS = None

(主内)

global CSMS
CSMS = CentralSystem()

在 business_cp.py 中导入

from server import CSMS

我该如何解决这个问题?有没有比使 CSMS 对象全局化更好的方法?

感谢您的帮助!

【问题讨论】:

    标签: python import module circular-dependency


    【解决方案1】:

    现在我已经通过从 business_cp.py 导入变量和函数来解决这个问题,如下所示:

    import lib.business_cp as bcp
    

    然后调用这些变量,例如:bcp.variable。但是我仍然认为这不是正确的方法(谈论使 CSMS 对象全局化)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-20
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      相关资源
      最近更新 更多