【问题标题】:Flask not recognising files in the app directory [duplicate]Flask无法识别应用程序目录中的文件[重复]
【发布时间】:2022-01-03 12:17:53
【问题描述】:

我的应用程序直到昨天都运行良好 - 快完成了,今晚就到期了。昨天由于某种原因,它无法识别应用程序文件夹中的任何文件(我使用的是 VSC)。我不知道为什么会突然发生这种情况,但我检查了 app.py 文件的目录,它与我的附加文件的路径相同。我什至尝试在另一台电脑上加载我的项目,以防问题出在我的内部文件系统上,但得到了同样的错误。

下面打印的错误是针对我的应用调用的第一个文件 datab.yaml,但是当我删除它时,我会在尝试调用的下一个文件 (sentiment_model.pkl) 中遇到相同的错误,依此类推。

错误:

File "c:\Users\jeram\Documents\NCI\Semester3\TriagatronX50\app.py", line 57, in <module>
    db = yaml.safe_load(open('datab.yaml'))
FileNotFoundError: [Errno 2] No such file or directory: 'datab.yaml'

我试过了

import os.path
prog = ("/Users/jeram/Documents/NCI/Semester3/TriagatronX50")
directory = os.path.dirname(os.path.abspath(prog))
print(os.path.join(directory, 'datab.yaml'))

但是当我运行它时它仍然会抛出同样的错误。

非常感谢任何帮助!

【问题讨论】:

  • 您可以尝试使用某些操作系统库功能获取当前工作目录(该 yaml 文件所在的位置)并获取其绝对路径,然后尝试打开该文件。顺便说一句,你是如何运行这个的?什么命令,来自哪个目录?
  • 我使用 VSC 中的控制面板在我的主 app.py 文件上运行它(“不调试运行”),但在您发表评论后,我尝试使用“flask run”命令运行它在终端中,它有效吗?!太奇怪了,因为直到现在我都在使用另一个按钮。非常感谢!不过,为了将来参考,当我只能在 python 文件中运行 os 命令时,如何检查 yaml 文件的绝对路径?我对此很陌生,所以不完全了解目录系统的工作原理。
  • 您可以使用getcwd 获取当前工作目录(CWD)。如果你的 CWD 不是包含 yaml 文件的那个,你会这样知道。

标签: python flask


【解决方案1】:

问题是: 执行时python文件的目录不是你放datab.yaml的目录。 因此,您应该指定datab.yaml 的整个抽象路径,如下所示:

import os.path
prog = ("/Users/jeram/Documents/NCI/Semester3/TriagatronX50")
directory = os.path.dirname(os.path.abspath(prog))
print(os.path.join(directory, 'datab.yaml'))

db = yaml.safe_load(open(os.path.join(directory, 'datab.yaml')))

然后执行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2021-03-03
    相关资源
    最近更新 更多