TIでは、Jupyterノートブックの特定のPythonカーネルにデフォルトの最初のセルを設定する方法がありますか?私は、デフォルトのPythonのインポートが良いコーディング慣行に反することに同意します。だから、Jupyterノートブックで最初のセルをデフォルトで設定する
、私はノートパソコンには、Pythonの新しいノートブックの最初のセルは、例えば、常に
import numpy as np
であるように設定することができますか?
TIでは、Jupyterノートブックの特定のPythonカーネルにデフォルトの最初のセルを設定する方法がありますか?私は、デフォルトのPythonのインポートが良いコーディング慣行に反することに同意します。だから、Jupyterノートブックで最初のセルをデフォルトで設定する
、私はノートパソコンには、Pythonの新しいノートブックの最初のセルは、例えば、常に
import numpy as np
であるように設定することができますか?
そこに行く:
~/.ipython/profile_default/startup/
あなたはREADMEを読むことができます:
このディレクトリ内のこのIPythonの起動ディレクトリである
の.pyと.ipyファイルは前に実行されますを任意のコード に割り当てるか、このプロファイルを読み込むたびにexec_linesまたはexec_filesで設定されたファイルを に設定します。
あなたは接頭辞を持つファイルの 実行順序を制御することができますので、ファイルは、例えば、辞書式順序で実行されます::
00-first.py 50-middle.py 99-last.ipy
だから、あなただけの00_imports.py
どのようにそこにファイルを作成する必要があります含まれています
import numpy as np
あなたはあなたが同様に直接使用することができます%matplotlib inline
使用.ipy
、のようなものを追加したい場合。
はまた、notebook extension
で別の解決策を存在があるようですが、私は、それがどのように動作するかを知っている話題のgithubの問題のためにここに表示されていない。 https://github.com/jupyter/notebook/issues/640
HTH
これはノートブックをシステムにバインドすると思います。別のマシンでノートブックを実行すると、エラーが発生します。これはノートブックをもう共有できないため、おそらく良い解決策ではありません。 – cel
@cel、あなたは何を意味するのか分かりません。あなたは詳細な情報を提供することができますか? – jrjc
@jeanrjcアイデアありがとう!しかし、@ celはまさに私の意見を得ました。これは、00-first.pyですべての暗黙的なインポートを文書化しない限り、移植が難しいコードを生成します。 私が望むのは、私が始めたすべての新しいpythonノートブックでは、最初のセルが既に特定のコードで埋められているということです。 –
IPython・プロファイルの作成します上記のように良い最初の解決策ですが、IMOは完全には満足していません、特にコードシェアリングに関してはそうです。
exec_linesコマンドでインポートされたライブラリ名は、ノートブックには表示されないので、簡単に忘れることがあります。別のプロファイル/マシンでコードを実行すると、エラーが発生します。
したがって、インポートされたライブラリが表示されるため、Jupyterノートブック拡張機能の使用をお勧めします。 ノートブックの冒頭で常に同じライブラリをインポートすることを避けます。 まず、Jupyterのnbextensionをインストールする必要があります。そして、あなたはNBの拡張機能がインストールされているパスにフォルダ「default_cells」を追加することにより、NBの拡張機能を作成することができますpip install jupyter_contrib_nbextensions
:https://github.com/ipython-contrib/jupyter_contrib_nbextensions またはPIPを使用します。 あなたはレポのクローンを作成することができます。たとえば、Ubuntuの場合、/ usr/local/share/jupyter/nbextensions /。、多分WindowsではC:\ Users \ xxxです。xxxは\のAppData \ \ jupyter \ nbextensions \ローミング
あなたはこのフォルダ内の3つのファイルを作成する必要がありますするための拡張
Iからコード使用:https://github.com/jupyter/notebook/issues/1451my main.jsである:
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
};
});
.yamlは次のようにフォーマットされなければならない。
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
と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. **
次に、 'Default cells' exteを有効にするだけですJupyterに登場した新しいタブ 'nbextensions'のnsion。
唯一の問題は、ノートブックのセル数を調べることでノートブックが新しいかどうかを検出することです。しかし、1つのセルにすべてのコードを書き込むと、新しいノートブックとして検出され、デフォルトのセルが追加されます。
申し訳ありませんが、自動修正がJupiterのタイトルに変更されました:S –
これを行う方法を見つけましたか?新しいノートブックで最初にやることは、標準的な輸入品の束ですから、非常に便利です! – kgully
jupyterの開発者はそうしたくないようですが、ノートブックの拡張機能を書くことをお勧めします。それをする方法を知っている誰かがうまくいけばうまくいくでしょう! https://github.com/jupyter/notebook/issues/640 – kgully