streamlit sharingにアップした場合にのみエラー発生します。
解決したいこと
streamlit sharingにアップした場合にのみエラーが発生するのを解決したいです。
vscodeのterminalでstreamlit runして開発中は問題なかったのですがstreamlit sharingにアップしたところエラーが発生しました。
windows
pyhon3
発生している問題・エラー
上記からアクセスすると下記のようにエラー発生します。
ModuleNotFoundError: This app has encountered an error. The original error message is redacted to prevent data leaks. Full error details have been recorded in the logs (if you're on Streamlit Cloud, click on 'Manage app' in the lower right of your app).
Traceback:
File "/home/appuser/venv/lib/python3.7/site-packages/streamlit/script_runner.py", line 379, in _run_script
exec(code, module.__dict__)
File "/app/stock_price/app.py", line 2, in <module>
import yfinance as yf
該当するソースコード
import pandas as pd
import yfinance as yf
import altair as alt
import streamlit as st
st.title('米国株価可視化アプリ')
st.sidebar.write("""
# GAFA株価
こちらは株価可視化ツールです。以下のオプションから表示日数を指定できます。
""")
st.sidebar.write("""
## 表示日数
""")
days = st.sidebar.slider('日数',1,50,20)
st.write(f"""
### 過去 **{days}日間** のGAFA株価
""")
@st.cache
def get_data(days,tickers):
df = pd.DataFrame()
for company in tickers.keys():
tkr = yf.Ticker(tickers[company])
hist = tkr.history(period=f'{days}d')
hist.index = hist.index.strftime('%d %B %Y')
hist = hist[['Close']]
hist.columns = [company]
hist = hist.T
hist.index.name = 'Name'
df = pd.concat([df,hist])
return df
try:
st.sidebar.write("""
## 株価の範囲指定
""")
ymin,ymax = st.sidebar.slider(
'範囲を指定してください。',
0.0,3500.0,(0.0,3500.0)
)
tickers = {
'apple' : 'AAPL',
'facebook' : 'FB',
'google':'GOOGL',
'microsoft':'MSFT',
'netflix':'NFLX',
'amazon':'AMZN'
}
df = get_data(days,tickers)
companies = st.multiselect(
'会社名を選択してください。',
list(df.index),
['google','amazon','facebook','apple'] #デフォルトの指定
)
#companiseに何も入っていない時の処理
if not companies:
st.error('少なくとも一社は選んでください。')
#選択された企業を表示させる
else:
data = df.loc[companies]
st.write('### 株価(USD)',data.sort_index())
data = data.T.reset_index()
data = pd.melt(data,id_vars=['Date']).rename(
columns = {'value':'Stock Prices(USD)'}
)
chart = (
alt.Chart(data)
.mark_line(opacity=0.8,clip=True)
.encode(
x='Date:T',
y=alt.Y('Stock Prices(USD):Q', stack = None, scale = alt.Scale(domain=[ymin,ymax])),
color='Name:N'
)
)
st.altair_chart(chart,use_container_width=True)
except:
st.error(
'おっと!なにかエラーが起きているようです。'
)
0