-
Notifications
You must be signed in to change notification settings - Fork 38
Adding web support #138
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
Adding web support #138
Conversation
CLA assistant check
All committers have signed the CLA.
FeodorFitsner
commented
Feb 20, 2025
I'm going to take a look when have time! Looks interesting. Right now web support is a part of Flet app template which is not ideal.
FeodorFitsner
commented
Feb 20, 2025
Just a thought - it would be great to use serious_python_web for both client-side runtime (Pyodide) and server-side (connecting to server Python via websockets), like see this page is adoptable for both scenarios: https://github.com/flet-dev/flet/blob/main/client/web/index.html
I see you are dynamically injecting JS references, which I like, I'm just wondering if we can adopt the approach for server-side run too.
cc6d296 to
e19c9ca
Compare
SebieF
commented
Apr 24, 2025
@FeodorFitsner Hello, I just wanted to make you aware that I pushed some significant code cleanups and rebased my branch on your latest changes.
Extra note:
The way I am currently handling the python package installation does not require bundling the app or downloading the packages. Everything is done using pyodide's loadPackage function, non-working dependencies like Flask are simply ignored. This would reduce the "bundling" to something like:
cp -r python_app/ assets/
rm -rf assets/python_app/{__pypackages__,venv,.venv} # Delete unnecessary directories to reduce app sizeI am happy to submit a pull request for that, once this PR is merged. Thanks for maintaining this project!
Also supports loading multiple requirements files (all found in asset manifest) now
b5810ce to
b28f784
Compare
Uh oh!
There was an error while loading. Please reload this page.
Hello, first of all: Thanks for the amazing project, it allows me to use a lot of scientific python packages, that I would have to re-write in Dart otherwise :)
I hope that I did not overlook something, but it seems like there is no implementation for running the python app on the web platform yet. This PR solves that situation.
About my approach:
SeriousPython.runon the browser does the following:pyodide.jslibrary from https://cdn.jsdelivr.net/pyodide/v0.27.2/full/pyodide.js to the html fileI used this synchronous command approach, because for me, it does not seem to be possible to use Flask inside of a browser environment.
I also know that my approach can definitely be improved, but I unfortunately do not have the time currently to do so. I still wanted to create the PR to get feedback on the general approach and to enable community efforts :)
Possible improvements:
.zipfile instead of the unpacked archive by usingunpack_archivefrom python: https://pyodide.org/en/stable/usage/loading-custom-python-code.htmlI am grateful for receiving any feedback!