【发布时间】:2021-06-04 13:00:03
【问题描述】:
我使用 Python 和 Streamlit 创建的应用程序有一个小问题。 问题是当我想将它部署到 Heroku 服务时,它会构建,但是当我尝试访问它时,它告诉我有一个应用程序错误。
我查看了我的代码,在本地机器上运行良好。
你有什么想法吗?
代码:
# Loading packages ##########################################################################
import streamlit as st
import numpy as np
import networkx as nx
from pyvis.network import Network
# import plotly.express as px
###############################################################################################
st.set_page_config(layout="wide")
##### Creazione Sidebar ####################################################################
st.sidebar.title('Ottimizzazione')
st.sidebar.header('Creazione matrice')
st.sidebar.write('Scrivere la matrice quadrata come da esempio Matrice: 1,2;4,5')
st.sidebar.write('Usare la , per separe le varie colonne e il ; per andare alla prossima riga')
input_matrice=st.sidebar.text_area('Scrivere Matrice:')
# Creazione matrice
matrice = np.matrix(input_matrice)
matrice_array = np.asarray(matrice)
##### Creazione Due colonne per output ##############################################################
left_column1, right_column1 = st.beta_columns(2)
left_column2, right_column2 = st.beta_columns(2)
## Visualizzazione matrice
with left_column1:
st.header('Matrice Quadrata Creata:')
matrice_array
with right_column1:
st.header('Visualizzazione del grafo:')
st.write('Il grafo verrà visualizzato in una apgina separata, in quanto al momento non riuslta possible integrarlo nella pagina pricipale')
##### Creaizone Input per calcolo #######################################################
st.sidebar.header('Calcolo percorso:')
st.sidebar.write('Calcolo del percorso più corto, Nx nodo di partenza e Ny nodo di arrivo. I nodi della matrice corrispondono agli indici della colonna.')
selezione = st.sidebar.radio("Seleziona tipo di calcolo",('Da Nx a tutti più vicini','Da Nx a Ny'))
if selezione == 'Da Nx a tutti più vicini':
nodo_partenza=np.int(st.sidebar.number_input('Scrivere nodo di partenza (Numero intero):'))
bottone_calcolo = st.sidebar.button('Calcola percorso', key=1)
if bottone_calcolo:
grafo_matrice = nx.from_numpy_matrix(matrice_array)
percorso = nx.single_source_dijkstra_path(grafo_matrice, nodo_partenza, weight='weight')
lunghezza = nx.single_source_dijkstra_path_length(grafo_matrice, nodo_partenza, weight='weight')
with left_column2:
st.header('Percorsi:')
st.write('Qui vengono mostrati i vari percorsi che sono stati trovati. I valori a destra corrispondono al ordine di successione, mentre I valori a destra i vari nodi.')
percorso
with right_column2:
st.header('Tempi percorsi:')
st.write('Qui vengono mostrati i vari tempi dei vari percorsi')
lunghezza
with right_column1:
nt=Network("1000px","1000px")
nt.from_nx(grafo_matrice)
nt.show("nx.html")
elif selezione == 'Da Nx a Ny':
nodo_partenza=np.int(st.sidebar.number_input('Scrivere nodo di partenza (Numero intero):'))
nodo_arrivo=np.int(st.sidebar.number_input('Scrivere nodo di arrivo (Numero intero):'))
bottone_calcolo = st.sidebar.button('Calcola percorso', key=2)
if bottone_calcolo:
grafo_matrice = nx.from_numpy_matrix(matrice_array)
percorso = nx.shortest_path(grafo_matrice, source=nodo_partenza, target=nodo_arrivo, weight='weight')
lunghezza = nx.shortest_path_length(grafo_matrice, source=nodo_partenza, target=nodo_arrivo, weight='weight')
with left_column2:
st.header('Percorso:')
st.write('Qui viene mostrato il percorso trovato. I valori a destra corrispondono al ordine di successione, mentre I valori a destra i vari nodi.')
percorso
with right_column2:
st.header('Tempo percorso:')
st.write('Qui viene mostrato il tempo totale del pecrorso più breve')
lunghezza
with right_column1:
nt=Network("1000px","1000px")
nt.from_nx(grafo_matrice)
nt.show("nx.html")
要求:
streamlit==0.75.0
numpy==1.19.2
networkx==2.5.0
pyvis==0.1.9
感谢您的帮助!
【问题讨论】:
-
欢迎来到 Stack Overflow。请澄清问题。 “有应用程序错误?”那是确切的信息吗?发出了什么命令导致了这个结果?除了上述代码,您还能提供哪些其他细节?你是如何部署的?您正在使用哪些选项?等等。
标签: python-3.x heroku streamlit