PyScript - Python in de browser

Tamara PyScript

Vorig jaar hoorden we over het PyScript-project als een nieuw framework voor Python-gebruikers. Peter Wang, CEO van het bedrijf Anaconda, presenteerde de alfaversie van dit project op de PyCon-conferentie in 2022. Het motto dat hij in zijn toespraak benadrukte was "De volgende 100 miljoen Pythonistas - of programmeren voor iedereen".

Terwijl we de voortdurende upgrades in de gaten houden sinds het voor het eerst werd gepresenteerd, laten we het hebben over basisinformatie en de voordelen die dit framework met zich meebrengt.

Hoe is het PyScript project ontstaan?

De meest voorkomende perceptie van softwareontwikkelaars van Python is dat het een makkelijk te leren programmeertaal is. Daarom staat het vaak in de top drie van populairste talen volgens onderzoek van StackOverflow.

De wetenschappelijke instrumenten van Python vormden de basis van het idee. Peter Wang en zijn collega Travis Oliphant wilden het niveau van gegevensanalyse en bedrijfsberekeningen verbeteren, vooral wat betreft big data.

De belangrijkste voordelen die ze zagen in dit project zijn:

  • Ontworpen met het oog op leesbaarheid ("Past in je hoofd")
  • Gemakkelijk te leren
  • Rijk ecosysteem van bibliotheken
  • Doet veel dingen met bescheiden inspanning
  • Zeer populair

Basis PyScript componenten

PyScript is een framework dat is uitgevonden om gebruikers de mogelijkheid te bieden Python-toepassingen rechtstreeks in de browser te maken. We kunnen de code direct in een HTML-interface schrijven dankzij Pyodide, Wasm en andere moderne webtechnologieën. Dit zijn de zes basiscomponenten:

  1. Python in de browser - maakt drop-in content mogelijk, hosting van applicaties zonder configuratieservers
  2. Python ecosysteem - gebruik van verschillende populaire wetenschappelijke tools zoals Numpy, Pandas, Sciki-learn, enz.
  3. Python met JavaScript - BI-gerichte communicatie tussen Python en JavaScript-objecten en namespaces
  4. Omgevingsbeheer - we kunnen definiëren welke pakketten en bestanden moeten worden opgenomen in draaiende paginacode
  5. Visuele applicatieontwikkeling - gebruiksgemak van UI-componenten, zoals knoppen, containers, tekstvakken, enz.
  6. Flexibel framework - kan worden gebruikt voor het maken en delen van nieuwe componenten die direct in Python kunnen worden opgenomen of uitgesloten

Elementen van PyScript

1. <py-config>

Met Py-config kunnen we metadata configureren en afhankelijkheden definiëren die nodig zijn voor PyScript-toepassingen. Configuratie is mogelijk in TOML en JSON formaten en we moeten deze plaatsen binnen de <body> tag.

Kenmerken:

PyScript elements

2. <py-repl>

Read Eval Print Loop is een interactief Python-raamwerk dat meerdere coderegels uitvoert. Als we een van de REPL elementen afdrukken - dan wordt de uitvoer getoond op de py-terminal.

Kenmerken:

PyScript Elements 3

3. <py-script>

Hiermee kunnen Python-scripts worden uitgevoerd in code of in een specifieke map die is geïmporteerd met src-kenmerken.

Kenmerken:

PyScript Elements 5

Plugins

<py-terminal>

Dit is een van de kernplug-ins die standaard actief is. Het wordt gebruikt voor het afdrukken over stdout en stderr en voor het weergeven van exportgegevens op de pagina py-terminal.

PyScript Elements 7

PyScript of JavaScript?

Door het PyScript project te starten, hebben we nu de keuze om de taal te gebruiken die we verkiezen. Het beste is dat we niet eens hoeven te beslissen over één van hen, omdat PyScript ons toestaat JavaScript-bibliotheken te gebruiken. Dit maakt JavaScript en PyScript compatibel. Het enige zwakke punt kan de downloadtijd zijn, dus in sommige gevallen is PyScript niet de beste keuze.

Als je vraagt of PyScript JavaScript gaat vervangen, dan is het antwoord nee. Dit framework moet extra waarde geven en de flexibiliteit vergroten voor alle Python-gebruikers. In gevallen waarin je HTML, CSS en JavaScript nooit zou gebruiken, heb je nu de motivatie om de voordelen van beide talen te combineren.

Deze blogpost is geschreven door onze software engineer Tamara Glišić.

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram