Inhaltsverzeichnis

Inline Python Editors

Bottom.ch with direct component

This is the preferred version as of 2025.

<!-- Include the script once (or from a DokuWiki plugin, or from userscripts. -->
<html><script type="module" src="https://bottom.ch/ksr/ed/bottom-editor.js"></script></html>
 
<!-- Include a custom component in HTML. Use height, min-height, max-height to control the size. -->
<!-- Leading empty lines will be dropped. -->
<html><bottom-editor style="min-height: 10lh;" autorun>
print(42)
</bottom-editor></html>

print(42)

You can install files from an URL (with CORS headers if from a different domain!):

<html><bottom-editor zip='https://bottom.ch/ksr/py/files/2m.zip'>
with open('gemeinden.csv', 'r') as infile:
    for line in infile:
        tokens = line.split(',')
        town = tokens[0]
        if town == 'Romanshorn':
            print(f'Romanshorn hat {tokens[2]} Einwohner')
</bottom-editor></html>

with open('gemeinden.csv', 'r') as infile: for line in infile: tokens = line.split(',') town = tokens[0] if town == 'Romanshorn': print(f'Romanshorn hat {tokens[2]} Einwohner')

Bottom.ch with iframe

With iframe on bottom.ch/ksr/py/embed.html, which is based on pyodide and codemirror.

<html><iframe frameborder="0" width="100%" allow="clipboard-write" src="https://tkilla77.github.io/python_editor_wasm/embed_old.html?autorun&code=print%28%27Hello%2C+dokuwiki%21%27%29"></iframe></html>

JupyterLite

Also based on pyodide, but with jupyter support all around.

<iframe
  src="https://jupyterlite.github.io/demo/repl/index.html"
  width="100%"
  height="500px"></iframe>