Flask找不到应用程序文件

时间:2018-11-27 13:40:10

标签: flask python-import filepath

我有一个独立的应用程序,该应用程序接收一个excel文件并输出word doc。这可以独立运行。

我现在试图将其集成到Flask应用程序中,但是flask无法找到我的应用程序的子文件夹“模板”。这是我的文件结构:

my_flask_site
├── flask_app.py
├── __init__.py    
├── templates
|   ├── index.html
|   └── report.html
├── uploads
|   └── myfile.xlsx
|  
└── apps
   └── convert_app
       ├── __init__.py
       ├── main.py
       ├── report
       |   ├── __init__.py
       |   ├── data_ingest.py
       |   └── report_output.py
       └── templates
           └── output_template.docx

现在我无法在报表应用程序中获取report_output.py文件来找到output_template.docx文件。

def run_report(file):
    data = data_ingest.Incident(file)
    priority_count = dict(data.df_length())
    size = sum(priority_count.values())
    print(priority_count)
    print(size)

    report = report_output.Report()
    report.header()
    report.priority_header(0)
    i = 0    
    if '1' in priority_count:
        for _ in range(priority_count['1']):
            field = data.fields(i)
            report.priority_body(field)
            i += 1
            report.break_page()
        report.priority_header(1)
    else:
        report.none()
        report.priority_header(1)

    if '2' in priority_count:
        for _ in range(priority_count['2']):
            field = data.fields(i)
            report.priority_body(field)
            i += 1
            report.break_page()
        report.priority_header(2)
    else:
        report.none()
        report.break_page()
        report.priority_header(2)

    if '3' in priority_count:
        for _ in range(priority_count['3']):
            field = data.fields(i)
            report.priority_body(field)
            i += 1
            report.break_page()

    if '4' in priority_count:
        for _ in range(priority_count['4']):
            field = data.fields(i)
            i += 1
    output = OUTPUT_FILE+f"/Platform Control OTT Daily Report {data.field[0]}.docx"
    report.save(output)
    print(f"Report saved to:\n\n\t {output}")

def main(file):
    run_report(file)


if __name__ == "__main__":
    main()

这是report_output.py(不含单词格式部分):

from docx import Document

class Report(object):
    def __init__(self):
        self.doc = Document('./templates/pcc_template.docx')

        self.p_title = ['Major Incident',
                    'Stability Incidents (HPI)',
                    'Other Incidents']
        self.date = datetime.now().strftime('%d %B %Y')


    def save(self, output):
        self.doc.save(output)

format_report.py文件中还有更多内容,但这与应用程序的功能有关。卡住的地方是如何让应用再次看到它自己的模板文件夹和其中的模板文件。

1 个答案:

答案 0 :(得分:0)

在这里Refering to a directory in a Flask app doesn't work unless the path is absolute找到这篇文章后,我已经解决了我的问题。

我从中学到的是,文件路径必须是Flask应用程序根文件夹中的绝对路径,在这种情况下,“ my_flask_site”是根文件夹,添加完整的文件路径即可解决问题。