Erstellen eines IPython Profil wie oben erwähnt ist eine gute erste Lösung, aber IMO ist es nicht völlig zufriedenstellend, vor allem, wenn es um Code-Sharing geht.
Die Namen Ihrer Bibliotheken, die mit dem Befehl exec_lines importiert wurden, werden nicht im Notizbuch angezeigt, sodass Sie sie leicht vergessen können. Und das Ausführen des Codes auf einem anderen Profil/einer anderen Maschine würde einen Fehler verursachen.
Daher würde ich empfehlen, eine Jupyter Notebook-Erweiterung zu verwenden, weil die importierten Bibliotheken angezeigt werden. Es wird vermieden, immer die gleichen Bibliotheken am Anfang eines Notebooks zu importieren. Zuerst müssen Sie die nbextension von Jupyter installieren. Sie können entweder klonen den Repo: https://github.com/ipython-contrib/jupyter_contrib_nbextensions oder pip verwenden: pip install jupyter_contrib_nbextensions
Dann können Sie eine nb Erweiterung erstellen, indem Sie einen Ordner Hinzufügen von ‚default_cells‘ auf den Pfad, wo die nb Erweiterungen installiert sind. Zum Beispiel unter Ubuntu ist es/usr/local/share/jupyter/nbextensions /., Vielleicht unter Windows: C: \ Users \ xxx.xxx \ AppData \ Roaming \ jupyter \ nbextensions \
Sie haben 3-Dateien in diesem Ordner zu erstellen:
- main.js die die js-Code der Erweiterung für die
- default_cells.yaml Beschreibung enthält API in Jupyter
- README.MD die übliche Beschreibung für den Reader in der API angezeigt.
verwendete ich den Code aus: https://github.com/jupyter/notebook/issues/1451my main.js ist:
define([
'base/js/namespace'
], function(
Jupyter
) {
function load_ipython_extension() {
if (Jupyter.notebook.get_cells().length===1){
//do your thing
Jupyter.notebook.insert_cell_above('code', 0).set_text("# Scientific libraries\nimport numpy as np\nimport scipy\n\n# import Pandas\n\nimport pandas as pd\n\n# Graphic libraries\n\nimport matplotlib as plt\n%matplotlib inline\nimport seaborn as sns\nfrom plotly.offline import init_notebook_mode, iplot, download_plotlyjs\ninit_notebook_mode()\nimport plotly.graph_objs as go\n\n# Extra options \n\npd.options.display.max_rows = 10\npd.set_option('max_columns', 50)\nsns.set(style='ticks', context='talk')\n\n# Creating alias for magic commands\n%alias_magic t time");
}
}
return {
load_ipython_extension: load_ipython_extension
};
});
die .yaml wie diese formatiert werden muss:
Type: IPython Notebook Extension
Compatibility: 3.x, 4.x
Name: Default cells
Main: main.js
Link: README.md
Description: |
Add a default cell for each new notebook. Useful when you import always the same libraries$
Parameters:
- none
und der README.md
default_cells
=========
Add default cells to each new notebook. You have to modify this line in the main.js file to change your default cell. For example
`Jupyter.notebook.insert_cell_above('code', 0).set_text("import numpy as np/nimportpandas as pd")`
You can also add another default cell by creating a new line just below :
`Jupyter.notebook.insert_cell_above('code', 1).set_text("from sklearn.meatrics import mean_squared_error")`
**Don't forget to increment 1 if you want more than one extra cell. **
Dann müssen Sie nur die "Standardzellen" exte aktivieren nsion in der neuen Registerkarte 'nbextensions', die in Jupyter erschien.
Das einzige Problem ist, dass es erkennt, ob das Notebook neu ist, indem Sie die Anzahl der Zellen im Notebook betrachten. Wenn Sie jedoch Ihren gesamten Code in eine Zelle geschrieben haben, wird er als neues Notizbuch erkannt und fügt weiterhin die Standardzellen hinzu.
Entschuldigung, Autokorrektur geändert Jupiter im Titel für Jupiter: S –
Haben Sie jemals einen Weg gefunden, dies zu tun? Es wäre sehr nützlich, da das erste, was ich in einem neuen Notebook mache, eine Reihe von Standardimporten ist! – kgully
Es sieht so aus, als ob die Jupiter-Entwickler das nicht machen wollen, aber schlagen vor, eine Notebook-Erweiterung zu schreiben. Hoffentlich wird jemand, der weiß, wie das geht, das tun! https://github.com/jupyter/notebook/issues/640 – kgully