lang:python:wasm
Différences
Ci-dessous, les différences entre deux révisions de la page.
| lang:python:wasm [2021/01/01 19:07] – Création root | lang:python:wasm [2021/01/02 09:19] (Version actuelle) – [Exemple d'application] : mise à jour du code html/javascript root | ||
|---|---|---|---|
| Ligne 48: | Ligne 48: | ||
| Exemple complet : | Exemple complet : | ||
| + | |||
| + | <file javascript load_python.js> | ||
| + | function loadPyModule(module, | ||
| + | xmlHttp = new XMLHttpRequest(); | ||
| + | xmlHttp.open( ' | ||
| + | xmlHttp.overrideMimeType(" | ||
| + | |||
| + | xmlHttp.onload = function() { | ||
| + | document.source = this.responseText | ||
| + | document.module = module | ||
| + | // Enregistre le fichier dans le système de fichier du runtime Python. | ||
| + | pyodide.runPython(` | ||
| + | import js | ||
| + | |||
| + | import sys | ||
| + | sys.path.insert(0, | ||
| + | |||
| + | print (" | ||
| + | |||
| + | with open(js.document.module + " | ||
| + | fd.write(js.document.source) | ||
| + | `); | ||
| + | |||
| + | // Nécessaire pour le moment. | ||
| + | // Je n' | ||
| + | pyodide.runPython(` | ||
| + | import ` + module + ` | ||
| + | `); | ||
| + | callback(); | ||
| + | } | ||
| + | |||
| + | xmlHttp.send('' | ||
| + | } | ||
| + | |||
| + | function loadPyModules(modules, | ||
| + | if (Object.is(modules.length - 1, i)) { | ||
| + | loadPyModule(modules[i], | ||
| + | } else { | ||
| + | loadPyModule(modules[i], | ||
| + | callback(modules[i]) | ||
| + | loadPyModules(modules, | ||
| + | }) | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| <file html5 index.html> | <file html5 index.html> | ||
| Ligne 57: | Ligne 102: | ||
| window.languagePluginUrl = '/ | window.languagePluginUrl = '/ | ||
| </ | </ | ||
| + | <script type=" | ||
| <script src="/ | <script src="/ | ||
| </ | </ | ||
| - | | + | < |
| - | <p id=" | + | |
| - | < | + | |
| - | document.getElementById(" | + | |
| - | // Charge le runtime python | + | |
| - | languagePluginLoader.then(() => { | + | |
| - | // Charge les dépendences externes | + | |
| - | pyodide.loadPackage(' | + | |
| - | // Récupère le module angle.py | + | |
| - | xmlHttp = new XMLHttpRequest(); | + | |
| - | xmlHttp.open( ' | + | |
| - | xmlHttp.overrideMimeType(" | + | |
| - | // Enregistre le module dans le système local de fichier du navigateur | + | <p id=" |
| - | xmlHttp.onreadystatechange | + | |
| - | if (this.readyState == 4 && this.status == 200) { | + | |
| - | // On enregistre le contenu du fichier angle.py dans une variable JavaScript | + | |
| - | document.source = this.responseText | + | |
| - | // L' | + | |
| - | pyodide.runPython(` | + | |
| - | import js | + | |
| - | import sys | + | < |
| - | sys.path.insert(0, | + | |
| - | with open("angle.py", "w" | + | progressBar = document.getElementById("demo" |
| - | | + | progressBar.innerHTML = "Start loading python."; |
| + | languagePluginLoader.then(() => { | ||
| + | progressBar.innerHTML = " | ||
| + | pyodide.loadPackage([' | ||
| + | progressBar.innerHTML = "numpy loaded. Loading scipy package."; | ||
| + | pyodide.loadPackage([' | ||
| + | progressBar.innerHTML = "scipy loaded. Loading python modules."; | ||
| + | loadPyModules([' | ||
| + | | ||
| + | |||
| + | pyodide.runPython(` | ||
| + | print (angle.Angle(3.14, angle.Angle.Unite.RADIAN).get_deg()) | ||
| + | |||
| + | print (compute.get_timestamp_ns()) | ||
| `); | `); | ||
| - | // On peut alors importer le module angle | + | |
| - | pyodide.runPython(`import angle`) | + | }); |
| - | | + | }); |
| - | } | + | }); |
| - | } | + | }); |
| - | xmlHttp.send('' | + | </ |
| - | }) | + | |
| - | }); | + | </ |
| - | </ | + | |
| - | </ | + | |
| </ | </ | ||
| </ | </ | ||
lang/python/wasm.1609524441.txt.gz · Dernière modification : de root
