Kang Nur


Suka main, njajan, dan data
Share: 

Diperbarui Rabu, 20 Mar 2024

Ditulis oleh Kang Nur

Mengatasi Path Directory pada Streamlit

Streamlit adalah framework bersifat open-source yang digunakan untuk membuat web apps secara cepat dan interaktif, biasanya untuk mendeploy model machine learning. Streamlit bisa dijalankan di lokal komputer kita atau di deploy di cloud salah satunya di https://share.streamlit.io/. Namun, ketika saya menjalankan di lokal dan di cloud saya menemukan masalah pada path directory ketika membaca file lain. Berikut struktur direktori saya:

  

    ├── To-the-Moon
    │   └── Streamlit
    │       └── Calories-Burned-Calculator
    │           ├── app.py
    │           ├── calculator.ipynb
    │           ├── data.csv
    │           ├── model.sav
    │           └── requirements.txt

  
  

Ketika saya menjalankan streamlit di lokal, untuk mengakses model.sav cukup dengan pickle.load(open('model.sav', 'rb')) karena memang masih satu direktori dengan app.py. Namun, ketika dijalankan di https://share.streamlit.io/, web-apps tidak bisa dijalankan . Berikut error yang muncul:

  

    File "/mount/src/data-science-portfolio/To-the-Moon/Streamlit/Calories-Burned-Calculator/app.py", line 10, in <module>
        model = pickle.load(open('model.sav', 'rb'))
    FileNotFoundError: [Errno 2] No such file or directory: 'model.sav'

  
  

Error tersebut menunjukkan bahwa file model.sav tidak ditemukan. di lingkungan https://share.streamlit.io/ untuk mengakses model.sav harus dari folder utama yakni To-the-Moon/Streamlit/Calories-Burned-Calculator/model.sav. Untuk mengatasi masalah ini, ada satu teknik yang unik yaitu menggunakan fungsi platform.processor(). Fungsi ini digunakan untuk mendapatkan informasi tentang prosesor yang digunakan oleh sistem. Berikut contoh kodenya:

  

    if platform.processor() != '':
     model = pickle.load(open('model.sav', 'rb'))
    else:
     model = pickle.load(open('To-the-Moon/Streamlit/Calories-Burned-Calculator/model.sav', 'rb'))

  
  

Pada pengujian tersebut apabila aplikasi dijalankan di lokal maka fungsi platform.processor() menampilkan prosesor komputer, artinya nilai tidak kosong, sedangkan di https://share.streamlit.io/ mengembalikan nilai kosong.

Hanya dengan fungsi platform.processor() kita bisa mengatasi masalah path directory pada streamlit di lingkungkan lokal maupun cloud.

, ,