I can run my python coding using streamlit on local computer with streamlit run file.py (screenshoot included) but error when i deploy it

I can run my python coding using streamlit on local computer with streamlit run file.py (screenshoot included)


but error when i deploy it to streamlit cloud. There is 1 xls file as dataset (i’ve linked my streamlit.io to my github → GitHub - bosimanurung/datasampah2021 ), the coding.py and xlsx file is in there

The screenshoot error when i deploy:

or i copy paste here:
ImportError: 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/adminuser/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 534, in _run_script
    exec(code, module.__dict__)File "/mount/src/datasampah2021/streamlit_app.py", line 12, in <module>
    datasampah = load_data()File "/mount/src/datasampah2021/streamlit_app.py", line 8, in load_data
    data = pd.read_excel('datasumbersampah.xlsx')File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 504, in read_excel
    io = ExcelFile(File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1580, in __init__
    self._reader = self._engines[engine](File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py", line 552, in __init__
    import_optional_dependency("openpyxl")File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/compat/_optional.py", line 135, in import_optional_dependency
    raise ImportError(msg)

My coding.py is (name streamlit_app.py on github):
import pandas as pd
import streamlit as st

st.set_page_config(layout=“wide”)

def load_data():
# Load your dataset here, replace ‘your_dataset.csv’ with your actual dataset file
data = pd.read_excel(‘datasumbersampah.xlsx’)
return data

Load the dataset

datasampah = load_data()

#baca data
#datasampah = pd.read_excel(“D:/Streamlit_bstry/datasumbersampah.xlsx”)
#print(datasampah)

#membuat field baru (Total)
datasampah[‘total’]=datasampah[‘rumahtangga’]+datasampah[‘perkantoran’]+datasampah[‘pasar’]+datasampah[‘perniagaan’]
+datasampah[‘fasilitaspublik’]+datasampah[‘kawasan’]+datasampah[‘lainnya’]
#print(datasampah)

#mau diBreakDown/diFilter by province
attributProvince = datasampah[‘provinsi’].unique().tolist()
#print(attributProvince)

row1_left, row1_middle, row1_right = st.columns((0.1, 3, 0.1))
with row1_middle:
st.title(‘Jumlah Sampah Provinsi Berdasarkan Sumber Sampah Tahun 2021’)
st.subheader(‘Streamli App by [Bosi] (https://bosimanurung.com)’)
st.markdown(‘Sampah merupakan masalah yang dihadapi hampir seluruh Negara di dunia. Tidak hanya di Negara negara berkembang, tetapi juga di
negara - negara maju, sampah selalu menjadi masalah. Rata-rata setiap harinya kota-kota besar di Indonesia menghasilkan puluhan ton sampah.
Pada dashboard berikut akan ditampilkan jumlah sampah (dalam satuan Ton) pada tiap provinsi di Indonesia berdasarkan sumber sampah.’)
st.markdown(‘Data yang digunakan bersumber dari https://sipsn.menlhk.go.id/sipsn/public/data/sumber’)

sidebar
st.sidebar.markdown(“Isikan parameter berikut :”)
provinsiygdipilih = st.sidebar.selectbox(‘Pilih Provinsi’, attributProvince)
#print(provinsiygdipilih)

datasampahprovinsi = datasampah.loc[datasampah[‘provinsi’] == provinsiygdipilih].reset_index(drop = True)
#print(datasampahprovinsi)

row2_left, row2_middle, row2_right = st.columns((.1, 3, .1))
with row2_middle:
st.subheader(‘Data yang digunakan’)
st.dataframe(datasampahprovinsi)

sektorsumbersampah = [‘rumahtangga’, ‘perkantoran’, ‘pasar’, ‘perniagaan’, ‘fasilitaspublik’, ‘kawasan’, ‘lainnya’]
#datasampahrumahtangga = datasampahprovinsi[‘rumahtangga’].sum()
#print(datasampahrumahtangga)

#bikin dataframe baru
jumlahsampah = pd.DataFrame(columns=[‘provinsi’, ‘jumlahsampah’, ‘kategorisampah’])
for sektor in sektorsumbersampah:
jumlah = datasampahprovinsi.groupby([‘provinsi’]).agg(jumlahsampah = (sektor, pd.Series.sum))
jumlah[‘kategorisampah’] = 'Sampah ’ + sektor.capitalize()
jumlah = jumlah.reset_index()
jumlahsampah = pd.concat([jumlahsampah, jumlah])

jumlahsampah = jumlahsampah.reset_index(drop=True)
#print(jumlahsampah)

#function tampilkan chart (visualisasi data)
import numpy as np
import matplotlib.pyplot as plt
def plotBar(data, x, y, color):
#Definisikan kolom yang akan di plot
x, y = data, data[y]

#Buat 1 Fugure and 1 subplot
fig, ax = plt.subplots()
    
#Bersihkan terlebih dahulu axes
ax.clear()

#Atur warna
color = plt.get_cmap(color)(np.linspace(0.25, 0.85, len(data)))

#Atur ukuran figure
fig.set_size_inches(10, 6)

#Plot data
ax.barh(x, y, color = color)

#Beri label pada sumbu (labelpad = memberi jarak label terhadap grafik)
ax.set_xlabel(xlabel = 'Jumlah Sampah (Ton)', labelpad = 12)

#Memberi anotasi pada grafik
j = 0
for i in plt.gca().patches:
    ax.text(i.get_width()+.5, i.get_y()+.4, str(round(y[j],2)), fontsize = 8, color='black')
    j = j + 1
    
#Hapus garis pada frame bagian kanan dan atas (atau dapat disesuaikan kebutuhan)
frame = ['right', 'top']
for i in frame:
    ax.spines[i].set_visible(False)

return fig, ax

jumlahsampah = jumlahsampah.sort_values(by = [‘jumlahsampah’])
jumlahsampah = jumlahsampah.reset_index(drop=True)
fig1, ax1 = plotBar(data=jumlahsampah, x=‘kategorisampah’, y=‘jumlahsampah’, color=‘Purples’)
#-> di Spyder muncul di atas kanan, bagian plot

#plt.show() → for VSCode, not for Spyder

#tampilkan plot grafik di streamlit
row3_left, row3_middle, row3_right = st.columns((0.1, 3, 0.1))
with row3_middle:
st.subheader(‘Jumlah Sampah Provinsi {} Tiap Sektor’.format(provinsiygdipilih))
st.markdown(‘Berikut Ditampilkan Hasil Visualisasi Dari Data Sampah Provinsi Tersebut:’)
st.pyplot(fig1)

Please help me. This is my first time to deploy it so everyone can see the dashboard from anywhere

Hey @BosiManru,

Please share the text of the full error message (you can view it by looking in the terminal on the right side of the page) and format your app code as code for better readability (check out #3 in our forum guidelines for instructions on formatting code).

There is no requirements.txt file in the github repo.
Add one at least with the content below :arrow_down:

requirements.txt

numpy
pandas
openpyxl
matplotlib
streamlit

Here is the error when i deploy on streamlit cloud. But the error didnt show on Terminal. On my local computer (localhost), there are no error.

File "/home/adminuser/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 534, in _run_script
    exec(code, module.__dict__)
File "/mount/src/datasampah2021/streamlit_app.py", line 12, in <module>
    datasampah = load_data()
File "/mount/src/datasampah2021/streamlit_app.py", line 8, in load_data
    data = pd.read_excel('datasumbersampah.xlsx')
File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 504, in read_excel
    io = ExcelFile(
File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1580, in __init__
    self._reader = self._engines[engine](
File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py", line 552, in __init__
    import_optional_dependency("openpyxl")
File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/compat/_optional.py", line 135, in import_optional_dependency
    raise ImportError(msg)

If you wanna see the log file, here it is:

  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 504, in read_excel
    io = ExcelFile(
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1580, in __init__
    self._reader = self._engines[engine](
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py", line 552, in __init__
    import_optional_dependency("openpyxl")
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/compat/_optional.py", line 135, in import_optional_dependency
    raise ImportError(msg)
ImportError: Missing optional dependency 'openpyxl'.  Use pip or conda to install openpyxl.
2023-12-21 14:19:59.002 503 GET /script-health-check (10.12.21.146) 158.01ms
2023-12-21 14:20:03.820 Uncaught app exception
Traceback (most recent call last):
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/compat/_optional.py", line 132, in import_optional_dependency
    module = importlib.import_module(name)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'openpyxl'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/adminuser/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 534, in _run_script
    exec(code, module.__dict__)
  File "/mount/src/datasampah2021/streamlit_app.py", line 12, in <module>
    datasampah = load_data()
  File "/mount/src/datasampah2021/streamlit_app.py", line 8, in load_data
    data = pd.read_excel('datasumbersampah.xlsx')
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 504, in read_excel
    io = ExcelFile(
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1580, in __init__
    self._reader = self._engines[engine](
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py", line 552, in __init__
    import_optional_dependency("openpyxl")
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/compat/_optional.py", line 135, in import_optional_dependency
    raise ImportError(msg)
ImportError: Missing optional dependency 'openpyxl'.  Use pip or conda to install openpyxl.
2023-12-21 14:20:03.998 503 GET /script-health-check (10.12.21.146) 180.56ms
2023-12-21 14:20:08.852 Uncaught app exception
Traceback (most recent call last):
  File "/home/adminuser/venv/lib/python3.9/site-packages/pandas/compat/_optional.py", line 132, in import_optional_dependency
    module = importlib.import_module(name)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'openpyxl'

Once Again:

Ok, thank you very much. I’ll try it.
How about to read the dataset, should i use the detail url of that file on github?
Thx.

Thank you very much guys…
It works now…
Thank you very much

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.