我使用cx_Freeze创建了flask应用程序可执行文件。
from cx_Freeze import setup, Executable
include_files = [ 'templates', 'static','res', 'doc','images',]
include = [ 'jinja2', 'jinja2.ext']
flaskapp = Executable(script="Flask_App.py",targetName="OnePager.exe", )
setup(
name="Prats17",
version="1.0",
description="Scrip analysis",
options={
'build_exe': {
'include_files': include_files,
'includes': include,
'build_exe': "build"
}
},
executables=[flaskapp]
)
Flask应用程序python文件导入另一个具有6个功能的py文件。当我通常在cmd上运行时效果很好--python Flask_App.py。
from flask import Flask,request, render_template,send_file,redirect,session, abort,url_for,flash,send_from_directory
import os
from flask_mail import Mail, Message
app = Flask(__name__)
app.secret_key = 'super secret key'
@app.route('/', methods = ['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
if request.form['uname'] != 'abc' or \
request.form['passw'] != '*****':
error = 'Invalid username or password. Please try again!'
else:
flash('You were successfully logged in')
return redirect(url_for('result'))
return render_template('login.html', error = error)
@app.route('/result',methods = ['POST', 'GET'])
def result():
# if request.method == 'POST':
flash("You are successfully logged in!!!")
result = request.form
return render_template("result.html",result = result)
@app.route('/myapp', methods=['POST','GET'])
def parse():
if request.method == 'POST':
import py_file
global chrome_path
chrome_path=os.getcwd()+'\\res\\chromedriver.exe'
global symbol
symbol = request.form['new-name']
volume_df = py_file.get_volume_data(symbol)
return render_template('myapp.html',filename=symbol+'.docx')
return render_template('myapp.html')
@app.route('/download/<filename>')
def download_file(filename):
return send_from_directory('./doc/', filename)
if __name__ == '__main__':
app.config['SESSION_TYPE'] = 'filesystem'
app.run()
执行exe后,页面创建为http://127.0.0.1:5000。直到http://127.0.0.1:5000/myapp都可以正常工作。但是,当我以输入形式发布符号时,它给了我错误页面.. 无法访问此站点。连接已重置。
我认为您的方法必须有一些错误,调试为“ View函数未返回响应”或类似的东西时,werkzeug会翻译此错误。当您在生产环境中运行时,它会像这样。
尝试将所有方法,然后在遇到错误时重定向到另一页。