-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
enable users to create standalone desktop Dash apps #158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hey @adrianoesch - Yeah, this is a great idea. The main difficulty in doing this is managing the cross-platform python installation and dependencies. Electron makes it easy by packing everything up, as far as I'm aware, there isn't a solution that makes this as easy in Python. Now, if the user does have python installed, then I presume that some type of "dash-reader" could use that dist of python, create a virtual env, and automatically install dependencies, and then run the app. Or, we could leave installing the dependencies entirely up to the user. A Dash Viewer App could just make Dash files "double-clickable" - double clicking on a dash app file ( Another future to imagine is entirely standalone Dash apps that don't use any python callbacks - basic interactivity between components is defined through a JSON spec and entirely self-contained within an HTML file. These apps would be very easily distributable. See plotly/dash-renderer#7 for a POC |
Thanks for your interest. I'll have a deeper look into you answer later. I found this in the meantime, looks promising. |
It's possible the BeeWare project could be useful. In particular, Briefcase, for packaging the app for multiple OS targets. |
https://code.fb.com/data-infrastructure/xars-a-more-efficient-open-source-system-for-self-contained-executables/ could be of use here? See discussion on Hacker News: https://news.ycombinator.com/item?id=17524086 |
@adrianoesch Hey, curious if you were able to make any progress in this area? I am interested in doing the same thing. The flask desktop project you linked to a year ago looks promising although I dont know if it will play nicely with dash or not but I am going to give it a go. |
pipenv environments seem to include all dependencies in the virtual environment folder including python itself. It would be a bit bulky, but I feel like it should be possible to use that to bundle all the python requirements. |
@befeltingu have a look at pywebview (https://github.com/r0x0r/pywebview). i played around a bit with it, seems to be a good desktop solution for flask/dash integration but you still have to ship everything in binaries. but this should not be too difficult either... (check the post from nicolas further up) |
@adrianoesch Thanks for the link that looks promising I will have a look. I have been looking at (https://github.com/smoqadam/PyFladesk) myself. It opens your Flask app in a Qwebview instead of using your browser. |
You could use Pywebview for a Cross platform Desktop App. It uses native Windows on every platform with a Web view inside and serves the App inside this Window. https://github.com/r0x0r/pywebview/blob/master/README.md Remi is using this as well to serve WebApps as Desktop Apps locally if you start the server with the standalone flag. |
@adrianoesch what was your final solution? PyFladesk? Everything worked fine? |
Hi guys! Since there is no answer from OP for a year, I can tell you that PyFladesk works like a charm for me. To use with dash you have to replace init_gui(app) with init_gui(app.server). |
Hi there, so if I want to use it in a computer with no python it is not working, isn´t it? |
* improve props typing * bump version * improve typing for dropdown values * required props / nested props * remove isRequired from column name (not confirmed yet) * make column name required
* improve props typing * bump version * improve typing for dropdown values * required props / nested props * remove isRequired from column name (not confirmed yet) * make column name required
Hi, I wanted to be able to optionally run my Dash application with the look & feel of a native application (not necessarily frozen into an executable), and came across this thread. I ended up implementing something for this using the native-web-app package to open the system web browser in its "web app" mode. It also shuts down the server, when the window is closed, exiting the application. It works well with Chrome and MS Edge on Windows, at least. I thought I'd share this gist here in case it helps anyone else searching for this: https://gist.github.com/adamgreg/cc1abd2123cf820d9e71bf3afb5e63f5 |
Hi Adam, looks like a really smart workaround, thanks for sharing. |
@adamgreg Did you package that app into an executable? |
@LukeDev42 No, I just run it as a script. AFAIK there no reason it wouldn't be compatible with PyInstaller though. Let me know if you have any success! |
I used native-web-app to create and easy way to open my app, used pytinstaller to create an executable for the app. Worked flawlessly, didn't even need to pass any crazy options for pyinstaller. Now I'm gonna make an installer using Inno Setup then I can publish the tool. |
@LukeDev42 Could you go into a bit more detail of how you were able to create the executable using My requirement is basically a standalone |
This is old, and is using cx_Freeze, but maybe it helps you: https://github.com/luquezsantiago86/Standalone_Exe_App.git |
To be clear, I did not use the one exe argument. I created the directory and an installer for the user to use. The installer set up a file in their program folders and created a desktop shortcut for them. |
Hi - this issue has been sitting for a while, so as part of our effort to tidy up our public repositories I'm going to close it. If it's still a concern, we'd be grateful if you could open a new issue (with a short reproducible example if appropriate) so that we can add it to our stack. Cheers - @gvwilson |
I was recently able to build dash into a standalone using a combination of pywebview and Nuitka. Dash / Flask create a server, pywebview accesses it, and nuitka creates a standalone application ( I've published my efforts into a GitHub template here: https://github.com/Ivorforce/Dash-Standalone-Boilerplate |
Yeah you can do it pretty easily in Windows with pywebview and autopytoexe. You can see an example here with a Flask server inside a Dash APP to show a live stream video + an explanatation how to make your .exe https://github.com/enzofranzy/Dash---Stream-Video-pywebview/tree/main |
I think for a lot of cases people don't want to get stuff running on a server and it's too big a hassle for some to run it locally. So i was thinking, given the popularity of electron, whether it would be possible to create a standalone app that reads and publishes sth like dash-books. Guess this could be really powerful (kind of an alternative to tableau etc.). I might have a go at it if you can point me into the right direction.
The text was updated successfully, but these errors were encountered: