Sharing Jupyter Notebooks + Voila with non-technical people

I have a project consisting of some tools + widgets which I turn into a usable app via Voila, and I am hoping to share it with my non-technical colleagues; this means their devices have no conda installation, no python executable, etc…, and I need to be able to share it without having then get all of these things themselves. Unfortunately, shared infrastructure/server hosting (e.g. Binder) is not an option due to security considerations, so I am hoping to create some kind of executable file they can just click on which will use a packaged python installation and libraries to run the app. Does anyone have ideas as to how I can go about this? Thank you so much for your help!

1 Like

Do you mean it can only be local? A private Binderhub or a Jupyterhub aren’t allowed?

I haven’t tried it but I think that need is partly what ContainDS Desktop addresses. I don’t know though how feasible it would be walking your non-technical colleagues through installing that and getting your image onto there?

Or install the things in a VirtualBox VM or VMWare Fusion? I cannot comment on how easy this is currently, but here gives you idea of what can be done and how you could walk non-technical people through access what they need.

1 Like

Generally, I think it makes things much easier for your non-technical colleagues if you are the one maintaining some kind of web site where they can log in to use your app. It is also easier to deploy updates.

The web app can certainly be behind a password or single-sign on, and maybe even on a private network. ContainDS Dashboards is an extension for JupyterHub that makes it easy to create a ‘dashboard’ app for other (non-technical) JupyterHub users to use. You would need to host that JupyterHub somewhere of course.

As @fomightez says, ContainDS Desktop does allow you to share your app as a file so that it can run completely locally on your colleagues’ machines, without needing the internet. But it does have some overhead as the user has to install and run Docker Desktop as well as ContainDS itself.

If you have a small userbase with everyone using the same operating system as you then it might be worth looking into PyInstaller or something similar (which wraps up the entire Python environment), but that is more likely to be expose system incompatibilities than the Docker or hosted approaches above. It is also not going to be able to cope with non-Python requirements of your web app in the same way.

I hope this gives you some ideas!

1 Like

Thank you so much @fomightez and @danlester! From what I have found, ContainsDS Desktop seems to be a good way to move forward for now since we have a very small userbase and I can install Docker without too much trouble on each of their machines. In the future it seems a ContainsDS Dashboard will be what I need. Appreciate the advice!

1 Like