• 循环依赖


    Python 模块是可以循环依赖的,但是必须避免循环实例化

    问题:

    Traceback (most recent call last):
      File "/export/BioToolWeb/main.py", line 10, in <module>
        from modules.tool import views as tool
      File "/export/BioToolWeb/modules/tool/views.py", line 12, in <module>
        from modules.tool.utils import get_cmd_args, STATUS, STATUS_DES, READ_SIZE, BULK_PIPLINE, BULK_DEFAULT_ARGS, start_pipline, exec_next_tool
      File "/export/BioToolWeb/modules/tool/utils.py", line 5, in <module>
        from modules.tool.dboxmr_helper import exec_cmd
      File "/export/BioToolWeb/modules/tool/dboxmr_helper.py", line 6, in <module>
        from modules.tool.utils import STATUS
    ImportError: cannot import name 'STATUS' from partially initialized module 'modules.tool.utils' (most likely due to a circular import) (/export/BioToolWeb/modules/tool/utils.py)

    代码

    modules/tool/utils.py

    import multiprocessing
    from datetime import datetime
    from modules import biopg
    import json
    from modules.tool.dboxmr_helper import exec_cmd
    from utils import LOG
    STATUS = { 'finished':0, 'analyzing':1, 'error':2, 'pause':3}
    STATUS_DES = {v:k  for k,v in STATUS.items()}
    BULK_PIPLINE = ['Trim_galore', 'Hisat2', 'StringTie']

    modules/tool/dboxmr_helper.py

    import requests
    from datetime import datetime
    import dboxmr
    from settings import TOOL_LOGS, DBOXMR_SVC, WEB_PORT
    from utils import LOG
    from modules.tool.utils import STATUS

    分析:

    在utils.py中的内容还没实例化完(如STATUS还没被实例化),dboxmr_helper.py就开始import了

    解决:修改utils.py

    import multiprocessing
    from datetime import datetime
    from modules import biopg
    import json
    from utils import LOG
    STATUS = { 'finished':0, 'analyzing':1, 'error':2, 'pause':3}
    from modules.tool.dboxmr_helper import exec_cmd #调整这句话的位置
    STATUS_DES = {v:k  for k,v in STATUS.items()}
    BULK_PIPLINE = ['Trim_galore', 'Hisat2', 'StringTie']
  • 相关阅读:
    五大Java开源论坛
    mysql limit,offset 区别
    查询某个字段存在于哪几个表
    C++分享笔记:5X5单词字谜游戏设计
    Linux分享笔记:系统状态检测命令小结
    Linux分享笔记:查看帮助命令 & 常用系统工作命令
    数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次
    Linux分享笔记:shell终端的介绍
    Java开发学生管理系统
    JAVA使用JDBC连接,修改MySQL数据库(比较乱)
  • 原文地址:https://www.cnblogs.com/testzcy/p/16459275.html
Copyright © 2020-2023  润新知