IPython Notebook exécuter toutes les cellules sur ouvrir
J'ai un IPython noteboook et je suis en train de le configurer de façon à ce que toutes les cellules sont lancées automatiquement lorsque l'ordinateur est ouvert.
Ce comportement est différent de sortie enregistrés pour ordinateurs portables qui contiennent des widgets. Les Widgets ne semblent se rendait pour moi quand les cellules contenant entre eux sont exécutés. Considérons l'exemple suivant:
from IPython.display import display
from IPython.html.widgets import IntSlider
w = IntSlider()
display(w)
Le curseur n'est pas affiché jusqu'à ce que la cellule est exécutée.
Est-ce quelque chose qui peut être accompli par le biais d'ordinateur Portable de Métadonnées ou des fichiers de configuration?
EDIT: https://try.jupyter.org/ semble être de faire quelque chose comme ceci: Notez que les ordinateurs portables ne sont pas en cours d'exécution lorsque vous ouvrez la page et affiche la sortie lorsqu'ils sont ouverts.
EDIT2: Ajoutant exemple.
Alors est OK si quelqu'un a mis
os.system("rm -rf *")
dans l'exécution automatique portable? N'est pas OK pour moi, j'utilise Linux desktop. Si il est sur le serveur, et non pas en tant que root, il va encore supprimer des fichiers sur le serveur que quelqu'un a besoin ou causer de problème d'entretien. Je suppose que si vous utilisez jetable VMs, il pourrait être OK, et en effet la jupyter à base de berkeley étincelle cours a été de fonctionner de cette façon (jeter de la VM, pas autorunning script).remarque: il ya une telle chose comme "de confiance" ipython notebook, marquée à partir de la ligne de commande avec
ipython trust filename.ipynb
ou d'une fiducie de commande dans le site web du menu fichier.Ne vois pas comment cela serait différent de quelqu'un d'entrer manuellement
os.system("rm -rf *")
et à son exécution. Un ordinateur portable hébergé sur un serveur et un ordinateur portable hébergé sur un serveur qui exécute automatiquement pouvez exécuter du code arbitraire sur le serveur.Je suis d'accord avec @MarkusSchanta, ce n'est pas un argument valable pour ne pas répondre à cette DONC, la question: Soit l'utilisateur n'est pas autorisé à entrer des commandes (ou l'ordinateur portable n'est pas marqué comme "de confiance"), ou qu'elle est autorisée à exécuter des commandes arbitraires, et elle peut causer des "dommages", soit de manière interactive, ou à un stade ultérieur, lorsque l'auto-exécute sur l'ordinateur portable.
OriginalL'auteur Markus Schanta | 2015-08-13
Vous devez vous connecter pour publier un commentaire.
J'ai juste trouvé un moyen de le faire assez facilement. Si vous installez le nbextensions paquet (https://github.com/ipython-contrib/jupyter_contrib_nbextensions), l'une des extensions est appelé "Initialisation des cellules et permet de marquer certaines cellules pour s'exécuter automatiquement lorsque l'ordinateur portable est chargé.
OriginalL'auteur thesamovar
La prochaine fois que vous (re)charger,
toutes les cellules, et d'un point de contrôle sera enregistré avec leur actualisation des sorties.
Noter que si vous désactivez la sortie de la au-dessus de la cellule, vous devez répéter les étapes 2 et 3.
ASTUCE
Vous pouvez envisager ces solutions plus appropriées pour ce que vous êtes probablement en train de réaliser:
Vous pouvez trouver un résumé de la situation dans cet article.
Controverse
Des questions similaires ont été demandé avant dans d'autres sites, mais dans cette googlegroup fil, quelqu'un proposa une solution, et l'animateur du groupe d'effacer(!), évidemment, pour préserver la vie sur terre 🙂
Alors, soyez prudent avec elle!
OriginalL'auteur ankostis
Je ne crois pas que cela soit possible.
ipython n'exécute pas le code, sauf si elle est 1) intentionnelle et 2) de confiance. Sinon, vous allez rencontrer des situations où vous charger de cahiers qui contiennent du code malveillant.
Vous pouvez consulter les détails de ipythons modèle de sécurité ici: https://ipython.org/ipython-doc/dev/notebook/security.html . En particulier la section qui parle de l'exécution de code sur ordinateur portable de l'ouverture: "Le problème de sécurité que nous devons résoudre est qu'aucun code doit s'exécuter juste parce qu'un utilisateur a ouvert un ordinateur portable qu'ils n'ont pas écrit"
Alors que vous pouvez définir approbation explicite sur un portable, je ne sais pas si ce sera alors également permettre d'automatiser l'exécution de code. Je n'ai rien vu de la sorte, mais peut-être que je n'en ai pas été à la recherche assez dur. J'ai vu d'ailleurs que le système d'exécution de code n'est pas quelque chose qui est disponible dans la base ipython paquet. Cochez cette question ici: https://github.com/ivanov/ipython-trainingwheels/issues/35
Au-delà de la confiance, une autre raison pour laquelle je crois que cela n'est pas possible est parce que 1) réglage automatique de l'exécution de code à remplacera toute sortie existant qui est actuellement enregistré dans l'ordinateur portable, qui peut ne pas être idéal, et 2) certains ordinateurs portables peuvent contenir un code complexe qui est gourmand en ressources, ce qui vous ne voulez pas être exécuté à chaque fois que vous avez ouvert le carnet de notes.
Quand j'ai ouvert la Julia portable sur ce site, les parcelles apparaissent dans le cahier, mais le statut en haut, dit "Noyau de départ, veuillez patienter", qui me fait penser que les parcelles sont juste sauvé de sortie et les cellules ne sont pas réellement en cours d'exécution de la charge. Peut-être que je manque quelque chose, mais comment est-ce que vous êtes désireux de réaliser différentes de gagner un ordinateur portable avec une sortie?
Certains de mes cellules contiennent widgets et ceux qui ne sont pas affichés jusqu'à ce que la cellule est exécuté. Exemple Simple: à partir de IPython.affichage de l'importation d'affichage de IPython.html.les widgets d'importation IntSlider w = IntSlider() afficher(w)
Vous pouvez améliorer votre réponse en citant des portions de ceci: ipython.org/ipython-doc/dev/notebook/security.html comme cette partie de "Le problème de sécurité que nous devons résoudre est qu'aucun code doit s'exécuter juste parce qu'un utilisateur a ouvert un ordinateur portable qu'ils n'ont pas d'écriture. Comme tout autre programme, une fois qu'un utilisateur décide d'exécuter du code dans un bloc-notes, il est considéré comme digne de confiance, et devrait être autorisé à faire quoi que ce soit."
Comme je le comprends, le Python, le code est exécuté sur le serveur d'hébergement de l'ordinateur portable. Je ne pense pas que l'exécution de code arbitraire sur le serveur serait un problème de sécurité pour le client. Pour le côté serveur, il n'est pas question d'un point de vue sécurité si le code est exécuté lors de l'ouverture ou manuellement.
OriginalL'auteur Simon