Jupyter unterstützt über 50 Sprachen (IPython-Kernel für andere Sprachen -für-andere-Sprachen)). Es ist einfach, sich an neue Sprachen anzupassen. (Referenz: Kernel für Jupyter erstellen) Als Beispiel erstellen wir hier einen neuen Kernel von Jupyter namens KeyValue.
Erstellen Sie einfach etwas, das Schlüssel / Wert-Paare verwaltet.
Befehl | Beschreibung |
---|---|
? | Schlüsselliste anzeigen |
Taste | Zeigt den Wert an, der der Taste entspricht |
Schlüsselwert | Stellen Sie den Wert ein, der dem Schlüssel entspricht |
Legen Sie einfach die beiden Dateien an Ort und Stelle.
Erstellen Sie die folgende JSON-Datei. Den Speicherort finden Sie unter Kernel-Spezifikationen. (Wenn Sie "python3" nicht in "argv" haben, ändern Sie es in "python".)
keyvalue/kernel.json
"argv": [
"python", "-m", "keyvaluekernel", "-f", "{connection_file}"
],
"display_name": "KeyValue"
}
Erstellen Sie die folgende Python-Datei unter dem Python-Installationsziel.
keyvaluekernel.py
from ipykernel.kernelbase import Kernel
class KeyValue(Kernel):
implementation = 'KeyValue'
implementation_version = '0.1'
language = 'no-op'
language_version = '0.1'
language_info = {'name': 'KeyValue', 'mimetype': 'text/plain'}
banner = 'Dictionry of Key, Value'
_d = {}
def do_execute(self, code, silent, store_history=True,
user_expressions=None, allow_stdin=False):
s = code.strip()
if not silent:
if s.startswith('?'):
c = {'name': 'stdout', 'text': ' '.join(KeyValue._d.keys())}
else:
ss = s.split(maxsplit=1)
if len(ss) == 1:
if s in KeyValue._d:
c = {'name': 'stdout', 'text': KeyValue._d[s]}
else:
c = {'name': 'stderr', 'text': 'Not found'}
else:
KeyValue._d[ss[0]] = ss[1]
c = {'name': 'stdout', 'text': ss[1]}
self.send_response(self.iopub_socket, 'stream', c)
return {'status': 'ok',
'execution_count': self.execution_count,
'payload': [],
'user_expressions': {},
}
def do_complete(self, code, cursor_pos):
s = code[:cursor_pos]
return {'status': 'ok', 'matches': [k for k in KeyValue._d if k.startswith(s)],
'cursor_start': cursor_pos, 'cursor_end': -1, 'metadata': {}}
if __name__ == '__main__':
from ipykernel.kernelapp import IPKernelApp
IPKernelApp.launch_instance(kernel_class=KeyValue)
Alternativ können Sie es an einem beliebigen Ort platzieren und den Ort in PYTHONPATH
des Schlüssels env
der JSON-Datei angeben.
keyvalue/kernel.json
{
"argv": [
"python", "-m", "keyvaluekernel", "-f", "{connection_file}"
],
"display_name": "KeyValue",
"env": {
"PYTHONPATH": "/path/to/your/modules"
}
}
Berechnet das Ergebnis der Ausführung mit do_execute und gibt es zurück. do_complete gibt zurück, was zu tun ist, wenn die Registerkarte gedrückt wird.
OS | Beispiel für den Erstellungsort |
---|---|
Windows | C:\Anaconda3\Lib\site-packages |
Ubuntu | /usr/local/lib/python3.4/dist-packages |
--Starten Sie mit "jupyter notebook" und wählen Sie [Key Value] unter [New]. --Geben Sie "key1 value1" ein und führen Sie aus (Umschalt + Eingabetaste).
Wir haben ein Docker-Image (tsutomu7 / keyvalue) zur einfachen Bestätigung vorbereitet. Sie können Folgendes überprüfen.
ubuntu
docker run -it --rm tsutomu7/keyvalue
Öffnen Sie nach dem Ausführen des obigen Vorgangs "http: // Host-IP-Adresse: 8888" (z. B. "http://172.17.0.2:8888").
Recommended Posts