python - 是否可以从 views.py 中的 __init__.py 导入变量?

标签 python flask import module python-3.5

我有一个 flask 应用程序,我在其中对一些数据进行了一些分析,并根据该数据绘制了一些图表。然而,到目前为止,我一直在我的 views.py 文件中,在我的索引方法中执行图表的分析和绘制。这不是很好,因为每次我在浏览器中执行“刷新”时,它都会重新进行整个分析并重新绘制图表。

我的项目结构如下:

Data Analysis/
  - app/
    - static/
    - templates/
      - base.html
      - index.html 
    - __init__.py
    - models.py
    - views.py
  - venv/
  - run.py
  - config.py

我考虑将我的数据分析移动到我的 __init__.py 模块,因为这将导致在应用程序运行后只计算所需的数据,而不是在每次刷新时重新运行它。我遇到的障碍实际上是从我的 __init__.py 模块导入我在 views.py 模块中需要的数据。

这是怎么做到的?

我试过以下方法:

__初始化__.py

from flask import Flask, url_for, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)

def do_data_analysis():
    #... lots of calculations

    return data

VALUES = do_data_analysis()

View .py

from app import app, models, __init__ #does not work
from __init__ import VALUES #does not work
import VALUES #does not work
from app import VALUES # does not work
VALUES = __init__.VALUES #does not work

是否有另一种可能更合适的方法来做到这一点?

编辑:

我已经设法通过创建一个模块 (data_analysis.py) 使其正常工作,我在其中执行所有数据分析。这也意味着在我的 __init__.py 中我删除了数据分析,现在我的 view.py 中有以下内容:

from app import data_analysis

现在我可以:

GPSVALUES = data_analysis.VALUES
#do something with the values..

但是它似乎确实运行了两次脚本。首先是启动我的 run.py。然后当第一个请求进来时再次。它似乎只在启动 run.py 时才运行脚本。如果刷新页面,它不会重新运行脚本,这正是我首先想要的。因此,我认为除非没有其他解决方案出现,否则我将采用此解决方案。(我会在完成更多测试后立即添加答案)

最佳答案

尝试

import __init__
VALUES = __init__.VALUES

from app import app, models, __init__ 

失败,因为如果 app 不在您的范围内,您将无法导入。

from __init__ import VALUES

失败,因为 VAULES 是一个变量而不是模块/函数。

import VALUES

失败是因为……没有VALUES模块。

关于python - 是否可以从 views.py 中的 __init__.py 导入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446241/

相关文章:

python - pip 未被识别为内部命令

python - 如何在 PyCharm 中使用元编程支持动态类型提示?

python - Google App Engine 标准环境中的 Gunicorn 服务器

flask - 如何修复: "Origin <localhost> is not allowed by Access-Control-Allow-Origin." -- with flask_cors

mongodb - 将地理数据导入 Mongodb 时出错 : Can't extract geo keys from object, 畸形几何

python - 在 Tkinter 中悬停后如何更改多个小部件的颜色?

python - 新 SDK Sentry-sdk/sentry-python 中的 SENTRY_USER_ATTRS 相当于什么?

python - Flask 重定向后的 Twilio MessagingResponse()

python - 在python中动态导入子模块

javascript - 为什么图像不显示在 React Native 中?失败的 Prop 类型 : Invalid prop `source` supplied to `Image`