我正在尝试启动此flask应用程序,但是执行app.run(Debug=True)
时出现此错误。错误堆栈位于代码下方。
import os
from flask import Flask, render_template, flash, request, redirect, url_for, send_from_directory
from werkzeug.utils import secure_filename
import sys
import numpy as np
import os.path
import getopt
from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import en_coref_md
from nltk.tokenize import sent_tokenize
from skip_thoughts import configuration
from skip_thoughts import encoder_manager
from sklearn.preprocessing import Imputer
from sklearn.cluster import KMeans
from sklearn.metrics.pairwise import cosine_similarity
import networkx as nx
app = Flask(__name__)
@app.route('/',methods=['GET'])
def index():
return render_template('index.html')
UPLOAD_FOLDER = '/path_to_uploads/Uploads'
ALLOWED_EXTENSIONS = set(['txt', 'pdf'])
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
model = None
nlp = None
@app.route('/load', methods=['GET'])
def _load_model():
model = load_model()
return True
def load_model():
nlp = en_coref_md.load()
print "coref model loaded"
VOCAB_FILE = "skip_thoughts_uni/vocab.txt"
EMBEDDING_MATRIX_FILE = "skip_thoughts_uni/embeddings.npy"
CHECKPOINT_PATH = "skip_thoughts_uni/model.ckpt-501424"
encoder = encoder_manager.EncoderManager()
print "loading skip model"
encoder.load_model(configuration.model_config(),
vocabulary_file=VOCAB_FILE,
embedding_matrix_file=EMBEDDING_MATRIX_FILE,
checkpoint_path=CHECKPOINT_PATH)
print "loaded"
return encoder,nlp
def convertpdf (fname, pages=None):
if not pages:
pagenums = set()
else:
pagenums = set(pages)
output = StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = file(fname, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
output.close
return text
def readfiles (file):
with open(file, 'r') as f:
contents = f.read()
return contents
def preprocess (data):
data = data.replace("\n", "")
data = data.replace(".", ". ")
sentences = ""
for s in sent_tokenize(data):
sentences= sentences + str(s.strip()) + " "
return sentences
def coref_resolution (data,nlp):
sent = unicode(data, "utf-8")
doc = nlp(sent)
if(doc._.has_coref):
data = str(doc._.coref_resolved)
return data
def generate_embed (encoder,data):
sent = sent_tokenize(data)
embed = encoder.encode(sent)
x = np.isnan(embed)
if (x.any() == True):
embed = Imputer().fit_transform(embed)
return sent, embed
def cluster (embed,n):
n_clusters = int(np.ceil(n*0.33))
kmeans = KMeans(n_clusters=n_clusters, random_state=0)
kmeans = kmeans.fit(embed)
array = []
for j in range(n_clusters):
array.append(list(np.where(kmeans.labels_ == j)))
arr= []
for i in range (n_clusters):
ratio = float(len(array[i][0]))/float(n)
sent_num = int(np.ceil(float(len(array[i][0]))*ratio))
if (sent_num > 0):
arr.append([i,sent_num])
return array,arr
def sent_select (arr, array, sentences,embed):
selected = []
for i in range(len(arr)):
sentences_x = []
for j in range(len(array[arr[i][0]][0])):
sentences_x.append(sentences[array[arr[i][0]][0][j]])
sim_mat = np.zeros([len(array[arr[i][0]][0]), len(array[arr[i][0]][0])])
for k in range(len(array[arr[i][0]][0])):
for l in range(len(array[arr[i][0]][0])):
if k != l:
sim_mat[k][l] = cosine_similarity(embed[k].reshape(1,2400), embed[l].reshape(1,2400))
nx_graph = nx.from_numpy_array(sim_mat)
scores = nx.pagerank(nx_graph)
ranked = sorted(scores)
x = arr[i][1]
for p in range(x):
selected.append(sentences_x[ranked[p]])
return selected
def generate_summary(encoder,text):
sent, embed = generate_embed(encoder,text)
array , arr = cluster(embed, len(sent))
selected = sent_select (arr,array,sent,embed)
summary = ""
for x in range(len(selected)):
try:
summary = summary + selected[x].encode('utf-8') + " "
except:
summary = summary + str(selected[x]) + " "
try:
sum_sent = sent_tokenize(summary.decode('utf-8'))
except:
sum_sent = sent_tokenize(summary)
summary = ""
for s in sent:
for se in sum_sent:
if (se == s):
try:
summary = summary + se.encode('utf-8') + " "
except:
summary = summary + str(se) + " "
return summary
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/single-summary', methods=['POST'])
def singleFileInput():
print(request.files['singleFile'])
file = request.files['singleFile']
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
uploaded_file_path = os.path.join(UPLOAD_FOLDER, filename)
text = ""
# for i in range(1, len(sys.argv)):
if(".pdf" in uploaded_file_path):
t = convertpdf(uploaded_file_path)
t = preprocess(t)
t = coref_resolution(t, nlp)
text = text + t
elif(".txt" in uploaded_file_path):
t = readfiles(uploaded_file_path)
t = preprocess(t)
t = coref_resolution(t, nlp)
text = text + t
summary = generate_summary(model,text)
return summary
@app.route('/multiple-summary', methods=['POST'])
def multipleFileInput():
print(request.files['multipleFile'])
file = request.files['multipleFile']
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
uploaded_file_path = os.path.join(UPLOAD_FOLDER, filename)
text = ""
# for i in range(1, len(sys.argv)):
if(".pdf" in uploaded_file_path):
t = convertpdf(uploaded_file_path)
t = preprocess(t)
t = coref_resolution(t, nlp)
text = text + t
elif(".txt" in uploaded_file_path):
t = readfiles(uploaded_file_path)
t = preprocess(t)
t = coref_resolution(t, nlp)
text = text + t
summary = generate_summary(model,text)
return summary
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
# submit an empty part without filename
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
#return uploaded_file(filename)
# return redirect(url_for('uploaded_file',
# filename=filename))
return render_template('index.html')
if __name__ == '__main__':
global model
global nlp
model, nlp = load_model()
app.run(debug=True)
这是错误跟踪堆栈:
File "app.py", line 251, in <module>
app.run(debug=True)
File "/directory_path/local/lib/python2.7/site-packages/flask/app.py", line 943, in run
run_simple(host, port, self, **options)
File "/directory_path/local/lib/python2.7/site-packages/werkzeug/serving.py", line 988, in run_simple
run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
File "/directory_path/local/lib/python2.7/site-packages/werkzeug/_reloader.py", line 332, in run_with_reloader
sys.exit(reloader.restart_with_reloader())
File "/directory_path/local/lib/python2.7/site-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader
exit_code = subprocess.call(args, env=new_environ, close_fds=False)
File "/usr/lib/python2.7/subprocess.py", line 523, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error
知道为什么会显示此错误吗?当我在自己的笔记本电脑上运行时,这没有显示。现在,由于模型加载功能使我的笔记本电脑无法工作,因此我正在功能更强大的台式机上进行操作。