循环依赖

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']
复制代码

 

posted on   我和你并没有不同  阅读(56)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示