尝试在python文件之间导入时出错

2024-05-13 01:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python构建一个基本的解析器应用程序。我监视一个文件夹,并在文件被放到那里时导入它们。我有一个MongoDB,我正试图保存导入。几乎什么都没有。当我试图包含一个class/mongo文档文件时,问题就出现了。我肯定这是一个简单的语法问题,我不明白。我已经安装了所有的需求,我正在一个虚拟环境中运行它。不过,这是我的第一个python应用程序,所以它可能是我没有看到的东西。你知道吗

我的文件结构是

application.py
requirements.txt
__init__.py
-services
   parser.py
   __init__.py
-models
   hl7message.py
   __init__.py

这里是应用程序.py你知道吗

from mongoengine import connect
import os, os.path, time
from services import parser

db = connect('testdb')
dr = 'C:\\Imports\\Processed'

def processimports():
    while True:
        files = os.listdir(dr)
        print(str(len(files)) + ' files found')
        for f in files:
            msg = open(dr + '\\' + f).read().replace('\n', '\r')
            parser.parse_message(msg)

        print('waiting')
        time.sleep(10)

processimports()

你知道吗要求.txt你知道吗

mongoengine
hl7

你知道吗分析器.py你知道吗

import hl7
from models import hl7message

def parse_message(message):
    m = hl7.parse(str(message))
    h = hl7message()

hl7型消息.py你知道吗

from utilities import common
from application import db
import mongoengine

class Hl7message(db.Document):
    message_type = db.StringField(db_field="m_typ")
    created = db.IntField(db_field="cr")
    message = db.StringField(db_field="m")

如果我不在分析器.py它运行良好,但一旦我包括它,我得到的错误,所以我相信它与该文件有关。不过,错误消息并没有什么帮助。我不知道我是不是把自己弄进了某种包含循环什么的。你知道吗

抱歉,堆栈跟踪在下面

Traceback (most recent call last):
  File "C:/OneDrive/Dev/3/Importer/application.py", line 3, in <module>
    from services import parser
  File "C:\OneDrive\Dev\3\Importer\services\parser.py", line 2, in <module>
    from models import hl7message
  File "C:\OneDrive\Dev\3\Importer\models\hl7message.py", line 2, in <module>
    from application import db
  File "C:\OneDrive\Dev\3\Importer\application.py", line 23, in <module>
    processimports()
  File "C:\OneDrive\Dev\3\Importer\application.py", line 17, in processimports
    parser.parse_message(msg)
AttributeError: module 'services.parser' has no attribute 'parse_message'

Tags: infrompydevimportparsermessagedb
1条回答
网友
1楼 · 发布于 2024-05-13 01:07:02

这是一个循环进口问题。应用程序.pyimports parser,它导入h17,它导入h17message,它导入在解析器模块的整个代码运行之前运行processimports的应用程序。你知道吗

在我看来,服务模块不应该导入应用程序。你可以创建一个新模块普通.py包含行db = connect('testdb')和import db from common应用程序.py在H17信息里。你知道吗

相关问题 更多 >