Cannot export styled data frame as image: OSError: Chrome executable not able to be found on your machine

I want to style (conditionally format) a dataframe and add it to a powerpoint/document which can be downloaded on the Streamlit app.

This is easily done locally, by using the dataframe-image package:

import dataframe_image as dfi
from io import BytesIO
from pptx import Presentation

df_styled = df.style.format(precision=0)
temp_file = BytesIO()
dfi.export(df_styled, temp_file)
slide.shapes.add_picture(temp_file)

However, when I then do this on my Streamlit Cloud app, it fails, saying:
OSError: Chrome executable not able to be found on your machine

I tried searching how to fix this error message but couldn’t seem to with chrome_installer etc. Does anyone know how to fix this?

A possible work around could be to convert the dataframe to HTML, then export the HTML to an image but I think, although I could style this with CSS, I would lose the ability to conditionally format numbers.

According to the pypi page this should be fixed by installing Chrome or Brave. I guess Chromium will do too.

Hm yeh I saw that but how do you install it into your GitHub repo as I can’t seem to just add a chrome Python package to my requirements.txt file

Those dependencies go in packages.txt

You need to find out what debian package installs one of those browsers.

So I put this in the packages.txt
chromium-chromedriver

I then download the chromium package from their website, put the file into my lib folder as it says here, but that didn’t work and Streamlit said it was looking for a ‘chromium-chromedriver’ folder, so literally created a folder called that and put the file in there, and now the app is just forever loading without any other message :confused:

Sorry I just don’t really know about this package stuff - I might just have to write it in HTML/CSS haha

I think you just need to put chromium in packages.txt.

that doesn’t work and the web app just reboots forever

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