Jupyter prend en charge plus de 50 langues (noyaux IPython pour d'autres langues -pour-d'autres-langues)). Il est facile de s'adapter à de nouvelles langues. (Référence: Créer des noyaux pour Jupyter) Ici, à titre d'exemple, créons un nouveau noyau de Jupyter appelé KeyValue.
Créez simplement quelque chose qui gère les paires clé / valeur.
Commande | Description |
---|---|
? | Afficher la liste des touches |
Clé | Affiche la valeur correspondant à la clé |
Valeur clé | Définir la valeur correspondant à la clé |
Mettez simplement les deux fichiers en place.
Créez le fichier JSON suivant. Voir Spécifications du noyau pour l'emplacement. (Si vous n'avez pas "python3" dans "argv", changez-le en "python".)
keyvalue/kernel.json
"argv": [
"python", "-m", "keyvaluekernel", "-f", "{connection_file}"
],
"display_name": "KeyValue"
}
Créez le fichier python suivant sous la destination d'installation de python.
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)
Vous pouvez également le placer dans n'importe quel emplacement et spécifier l'emplacement dans PYTHONPATH
de la clé ʻenv` du fichier JSON.
keyvalue/kernel.json
{
"argv": [
"python", "-m", "keyvaluekernel", "-f", "{connection_file}"
],
"display_name": "KeyValue",
"env": {
"PYTHONPATH": "/path/to/your/modules"
}
}
Calcule et renvoie le résultat de l'exécution avec do_execute. do_complete renvoie ce qu'il faut terminer lorsque vous appuyez sur l'onglet.
OS | Exemple d'emplacement de création |
---|---|
Windows | C:\Anaconda3\Lib\site-packages |
Ubuntu | /usr/local/lib/python3.4/dist-packages |
Nous avons préparé une image docker (tsutomu7 / keyvalue) pour une confirmation facile. Vous pouvez vérifier comme suit.
ubuntu
docker run -it --rm tsutomu7/keyvalue
Après avoir exécuté ce qui précède, ouvrez "http: // Adresse IP de l'hôte: 8888" (par exemple, "http://172.17.0.2:8888").
Recommended Posts