【问题标题】:How do I go about running a Python program from within Flask web server?如何从 Flask Web 服务器中运行 Python 程序?
【发布时间】:2019-04-08 14:38:58
【问题描述】:

我有一个 Python 程序,旨在允许用户选择图像上的点。点击的点会保存到 YML 文件中。

我目前的设置方式是,当从服务器调用 Python 程序时,它会在单独的窗口中执行 Python GUI(就像通过命令行执行它一样)和用户输入是通过我用来运行服务器的命令行获取的。我希望这都是内部的。就像这样,如果有意义的话,一切都通过服务器运行。

我该怎么做呢?是否有可用的库可以使这样的事情成为可能?下面的代码显示了 Python 程序当前是如何在服务器中运行的。如果你去 /test url,它会在这种情况下执行。

希望这张图片能让您了解我正在尝试做的事情。本质上,我需要图像在服务器中打开和交互。我不需要确切的代码来做到这一点,只是解释我应该如何去做。

- project
    - data (folder that holds output information from pythonGUI.py)
    - app
        - templates
            - index.html
        - routes.py
        - models.py
        - __init__.py
    - pythonGUI.py
    - config.py
    - server.py

routes.py

from app import app
from flask import Flask, request, render_template, session
import pythonGUI

app.secret_key = app.config['SECRET_KEY']

@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')

@app.route('/test')
def test():
    return pythonGUI.main()

if __name__ == '__main__':
    app.run(host='0.0.0.0', port='8000', debug=True)

pythonGUI.py

from app import app
import cv2

def main():
#Some code here

if __name__ == '__main__':
    main()

如果您需要更多代码,请告诉我。我不确定在这种情况下显示什么相关。谢谢

【问题讨论】:

  • 我已阅读您的问题,但我不清楚您的最终目标是什么。您想要一个用户在 Web 浏览器中执行点击和操作并接收反馈的 Web 应用程序吗?如果是这样,您需要更多地使用 flask 并在浏览器端与 Javascript 集成
  • 您的烧瓶应用程序目前所做的只是提供了一种执行python脚本的奇特方式,无需烧瓶即可轻松地从终端调用
  • 是的,这正是我想要做的。抱歉,我无法描述这个问题。是的,不过,我需要它来获取输入(图像),允许用户使用它做某事,然后返回输出。我将进一步研究 Flask 库和 javascript。谢谢!

标签: python flask server


【解决方案1】:

目前,我不确定您是否需要图片库;你可能只使用 Javascript 和 Flask 就可以了。

下面是我的做法:

有关于使用 Javascript 从图片中获取坐标的问题。谷歌搜索大约 10 秒后,我发现了这个:get image pixel coordinates relative left top corner

获取该输出并将其发送到flask 中的另一个路由。像这样的:

from flask import request

def image_coordinate_processing(x,y):
    #Do stuff
    return result

@app.route('/_img_coordinates')
def _img_coordinates():
    x = int(request.args.get('x'))
    y = int(request.args.get('y'))

    result = image_coordinate_processing(x,y)

    return 'completed'

在您的模板中,您可以像这样发送数据:

{{url_for('_img_coordinates', x=x, y=y)}}

显然,这不是所有代码,但应该能让你找到一个不错的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多