10
votes

Notebook Python Jupyter: Spécifiez l'ordre d'exécution des cellules

J'ai un ordinateur portable Jupyter. Dans la cellule 1, j'ai défini beaucoup de fonctions, qui doivent courir avant d'autres choses. Ensuite, dans les cellules suivantes, je commence à présenter le résultat. Cependant, lorsque je conversé en HTML, cette mise en page est laide. Les lecteurs doivent faire défiler une longue période pour voir le résultat et ils ne se soucieront pas des fonctions du tout. Mais je dois mettre le code dans cet ordre parce que j'ai besoin de ces fonctions.

Donc, ma question est, est-ce que je pouvais contrôler l'ordre de course des cellules après que je clique sur Go tout? ou y a-t-il une façon de faire quelque chose comme ce qui suit. Je mets toutes mes définitions de fonction dans la cellule 20, puis dans la cellule 1, je pourrais dire dire à Jupyter quelque chose comme "Cellule de course 20".

juste curieux si cela est faisable. Merci.


5 commentaires

Il y a une extension appelée init_cell qui ajoute un bouton à la barre d'outils et "Initialise" ou exécute des cellules spécifiques chaque fois que le cahier est redémarré. Cela nécessite l'installation de Nbextensions s'il n'est pas déjà installé et indiquant des cellules spécifiques via la vue> Barre d'outils cellulaire> Menu de cellule d'initialisation.


J'exécute personnellement les ordinateurs portables deux fois pour résoudre le problème que vous avez (en utilisant si pour exécuter uniquement les premières cellules de la 2e itération).


@pistache en fait, je vais exécuter le cahier au quotidien. Je voudrais donc l'automatiser avec NBConvert.


Nous sommes Utilisation des mécanismes pour masquer les cellules de code de la sortie NBConvert.


FYI Ce que vous demandez est une programmation alphabétisée à Jupyter. C'est ce que je voulais aussi ...


4 Réponses :


3
votes

Une telle fonctionnalité (à ma connaissance) n'est pas encore disponible à Jupyter. Cependant, si vous êtes vraiment inquiet d'avoir beaucoup de définitions de fonction au début et que vous voulez les cacher, vous pouvez faire l'alternative suivante:

  1. Définissez les fonctions dans un script Python.
  2. Ajoutez l'exécution de script à la première cellule de codage de votre ordinateur portable
  3. Ajoutez le reste du code aux cellules consécutives du cahier
  4. Eventuellement, montrez son contenu à la fin de la commodité des téléspectateurs.

2 commentaires

Quand vous dites "encore", voulez-vous dire qu'ils comprendront dans la prochaine version? Ou dans "jupyterlab"? Ouais, importer comme module sonne comme la meilleure chose que je puisse faire maintenant.


Je suis venu ici à la recherche d'un moyen de faire du préambule être placé à la fin, à cause de Cet article réfléchi sur la programmation alphabétisée et ordre de présentation de code . J'aime cette réponse parce que la plupart du temps déplace les détails, mais les considèrent ensuite les affichant après. Très bon travail!



4
votes

Je sauvegarderiez les fonctions sous forme de module séparé, puis importeriez ce module au début.


0 commentaires

0
votes

envisagez d'utiliser RunTools NBextension, ce qui vous permet d'exécuter des cellules sélectionnées .


0 commentaires

2
votes

Consultez le Execution_DePendances NBexTrenant . Avec cela, vous pouvez définir des dépendances sur l'ordre de l'exécution de vos cellules.

utiliser des balises sur vos cellules: Vue - Barre d'outils cellulaire - Tags p>

EG: P>

Ajouter des balises à vos cellules P>

Cell 1 - #html, => Fonctions P>

txt = 'functions'


1 commentaires

C'est ce que je cherchais! Merci :)