Do you have any idea if performance is increased on a Streamlit desktop app? The only major drawback for using Streamlit for me personally is that it can’t display things quickly like PyQT might be able to.
Does the “performance” here means the frame rate?
If so, I think the answer is no, same as the answer at the linked thread. Even with stlite, both the server and the frontend app are the same to original Streamlit, so the situation does not change.
No, there is already Windows and Linux support, though personally I have not tested it on my local env.
As written in the README, this desktop app bundler is just using Electron and electron-builder that can create executables for Windows, macOS, and Linux.
Hi, Thank you for sharing. How to manage virtual environnement with Electron app please ?
I’m running on windows 11… I’m also interrested on linux @whitphx
@NotAfk Although I’m not sure about what you actually want,
with stlite, there is not virtual environment concept and we don’t need to consider about it anyway.
On stite (Pyodide), the Python runtime is sandboxed in the web browser’s JS environment and created every time the app launches.
Hi!
Thanks for sharing this awesome app!
Do these electron builds remain offline for the end user? Like - Can they use the Electron-built streamlit app with no internet connection and with no connection to a server on my end? If this is the case, you’ve solved a half-year struggle!
@whitphx wow, thanks for creating and sharing this.
I really hope to see further development, I don’t think native streamlit apps are part of the current roadmap.
Is it possible to change the python version ? Or is this utterly dependent on Pyodide and pure Python wheels for 3.10
Thank you for taking the time to create the app bundle.
With your instructions, I comfortably bundled my first Streamlit desktop app.
I am currently trying to persist an offline database - in my case a json file - and am following some instructions I found online: Stackoverflow Question.
The first step is to add an “extraResource” key to the package.json file and have the value be the resource location once bundled.
The next instruction is to add the following code into what is likely the main.js file (found in the “build / electron” directory) so that you can potentially reference the resource from within app once bundled.
I’m not much of a JS guy, and am wondering if you have any advise or experience setting up an offline database for an electron app? I’ve thought about adding the above code in to the main.js file but cannot logically understand where it would go.
It should be noted that I have managed to push the database file into the dist folder with the “npm run dist” command, but I am unable to locate it from within the bundled app.
Hi, thank you for trying it out.
Unfortunately it does not support persisting data or file changes now.
I have managed to push the database file into the dist folder with the “npm run dist” command, but I am unable to locate it from within the bundled app.
So this is an expected behavior that only the contents in the streamlit_app directory are loaded to the app, and changes on these files are never persisted.
I created an issue about this, so please track it:
Hi @whitphx this is awesome and I love the idea.
But unfortunately it’s not working good for me because there is a version incompatibility between Streamlit and Altair versions. Could someone help me?
@whitphx : you rock, thank you for making this wrapper.
Does anyone know a resource that would explain howto handle requests with it? I know requests package won’t do the trick (not implemented in Pyodide).
I’d like to fetch the data from the website using its API, then create object using this fetched data. So far my experiments with pyodide.http.pyfetch failed miserably as I got TypeError: coroutine object is not subscriptable.
Thanks for stopping by! We use cookies to help us understand how you interact with our website.
By clicking “Accept all”, you consent to our use of cookies. For more information, please see our privacy policy.
Cookie settings
Strictly necessary cookies
These cookies are necessary for the website to function and cannot be switched off. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.
Performance cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand how visitors move around the site and which pages are most frequently visited.
Functional cookies
These cookies are used to record your choices and settings, maintain your preferences over time and recognize you when you return to our website. These cookies help us to personalize our content for you and remember your preferences.
Targeting cookies
These cookies may be deployed to our site by our advertising partners to build a profile of your interest and provide you with content that is relevant to you, including showing you relevant ads on other websites.