【问题标题】:Flask [Errno 2] No such file or directory:Flask [Errno 2] 没有这样的文件或目录:
【发布时间】:2020-01-25 15:29:07
【问题描述】:

我有一个烧瓶应用程序,它使用 json 文件来存储一些配置数据。该 .json 文件存储在与烧瓶应用程序文件(app.py)所在的位置(目录)相同的位置(目录)。这个烧瓶应用程序在本地机器上运行良好。但是当我部署到实时服务器(Ubuntu VPS)时,我收到了一个 WSGI 错误提示

FileNotFoundError: [Errno 2] No such file or directory: 'config.json'

我的 .json 文件代码如下

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
import json
import random

with open('config.json', 'r') as c:
    par = json.load(c)["par"]

这是什么问题以及如何解决?

【问题讨论】:

  • 您确定将 json 文件与其他文件一起部署了吗?试试print(os.listdir('.'))看看你在哪里
  • 服务器可以在不同的文件夹中运行它,作为不同的用户,具有不同的权限——大多数是出于安全原因。您可能需要使用文件的完整路径。
  • 我试过这个。但同样的问题。 json_data = os.path.join('config.json') with open(json_data, 'r') as c: par = json.load(c)["par"]

标签: python json flask ubuntu-18.04


【解决方案1】:

这可能会有所帮助,将 app.py 的名称更改为 __init__.py 或者只是在与您的 app.py 文件相同的目录中创建一个空的 __init__.py 文件。这里有很多解释:

What is __init__.py for?

【讨论】:

  • 您是否尝试了文件的完整路径?
  • 如果你将 'r' 更改为 'wb' 运行代码,然后将其改回 'r' 它会起作用,我知道我试过了。
  • 它在添加后起作用:json_data = os.path.join('/var/www/webApp/webApp/config.json') with open(json_data, 'r') as c: par = json.load(c)["par"] 但是现在我无法在本地计算机中使用烧瓶应用程序。
  • 没有任何效果。错误日志显示未找到“/config.json”。然后我使用 FileZilla 将文件“config.json”重命名为“/config.json”。然后该文件消失了,应用程序(站点)工作正常。我不知道发生了什么。但现在可以了。
  • 我再次重现了这个问题,看看我是否能找到这个问题的根源。我正在使用 Visual Studio。解决方案是:终端的工作目录必须与文件所在的目录相同。例如,我的 python 文件和 config.json 文件位于 C:\a\b\c\folder 中,那么我必须运行当我的终端的工作目录也是 C:\a\b\c\folder 时的 python 文件。如果你不这样做,你会得到一个找不到文件的错误。请确认并标记为已解决。
【解决方案2】:

将该文件放在静态目录中 更改文件路径。

with open('static/config.json', 'r') as c:
    par = json.load(c)["par"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2015-11-19
    • 2013-03-21
    • 2015-04-09
    • 2019-05-26
    • 2018-12-06
    相关资源
    最近更新 更多