运行一个包来控制flask内的程序

问题描述 投票:0回答:1

我对 Flask 还很陌生,我正在尝试构建一个考虑一些输入的 Web 应用程序,并尝试将这些输入传递给基于覆盖程序(MathCAD)中输入的包的另一个函数。基本上对于网络应用程序部分来说,它工作正常,我可以轻松检索所有变量,但是当我尝试将这些变量传递给该包(称为 MathcadPy)时,我遇到了丢失属性错误。这是将输入写入程序的代码部分(在本地工作正常),我称之为“Mathcad_exp.py”:




from MathcadPy import Mathcad
import os
folder = os.getcwd()

def mathcad_try(var):
    mathcad_app = Mathcad(visible=False)
    w_math = mathcad_app.open(folder+ "\Mathcad\Sample.mcdx")
    w_math.set_real_input("d_cond", var)
    w_math.save_as(folder + "\Mathcad\Sample.mcdx")
    w_math.close()
    return

这是我的烧瓶代码:

import os 
from pathlib import Path
from flask_sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap
from flask_migrate import Migrate
from flask_session import Session
from flask import Flask, render_template, request, url_for, redirect,session
import numpy as np
import Mathcad_exp

app = Flask(__name__)
Session(app)
Bootstrap(app)

@app.route('/test/',methods=['POST','GET'])
def test():
  if request.method =="GET":
    return render_template("test.html")
  else:
    test_math=Mathcad_exp.mathcad_try(10)
    return redirect(url_for("test"))

在 html 中我只放了一个按钮来传递“Post”方法:

<form action="#" method="post">
        <!--Submit Button -->
        <div class="py-1">
            <div class="btn-example">
              <button type="submit" class="btn btn-primary">Try to write a mathcad</button>
            </div>
          </div>
        </div>
</form>

这两个python文件位于同一级文件夹中。 但无论如何我得到了一个属性错误:“AttributeError:'Mathcad'对象没有属性'_Mathcad__mcadapp'”。我可以注意到,属性的名称似乎与我在本地运行时发生了变化。我知道这是一个非常具体的问题,因为 Mathcad 是许可软件,但是我是否缺少在 Flask 中的 python 中使用另一个 API 脚本的一些重要部分?我再说一遍,我对此很陌生,也许我错过了一些基本的东西。

python flask mathcad
1个回答
0
投票

我通过在请求方法内添加到烧瓶路线来解决这个问题 对于 Coinizialitze 和 Counialize:

@app.route('/test/',methods=['POST','GET'])
def test():
  if request.method =="GET":
    return render_template("test.html")
  else:
    import pythoncom
    pythoncom.CoInitialize()
    test_math=Mathcad_exp.mathcad_try(10)
    pythoncom.CoUninitialize()
    return redirect(url_for("test"))
© www.soinside.com 2019 - 2024. All rights reserved.