プロジェクト

全般

プロフィール

Jupyter » 履歴 » バージョン 1

kanata, 2025/04/13 15:38

1 1 kanata
# Jupyter
2
3
{{rawhtml(<canvas id="map"></canvas><script src="/javascripts/pagemap.min.js"></script><script>pagemap(document.querySelector("#map"));</script>)}}
4
5
{{toc}}
6
7
シェル芸人のためのJupyter環境を構築しよう!!!11
8
9
## スクリーンショット
10
11
![screenshot1.png](screenshot1.png)
12
13
# Jupyterとは
14
15
スクリーンショットをご覧あれ。ブラウザでPython(Bashも)を実行出来る環境です。
16
17
* [[Markdown]]形式のメモと一緒にWeb上で実行&保存できちゃうステキ機能
18
* 書いた物は保存できて、いつでも再実行可。
19
* スライドやhtmlにも変換できます。
20
* GitHub Gistにエクスポートすれば、公開もできちゃう。
21
22
まさに[Pythonista](http://ejje.weblio.jp/content/Pythonista)([シェル芸人](http://d.hatena.ne.jp/keyword/%A5%B7%A5%A7%A5%EB%B7%DD%BF%CD))のための環境ですねw
23
24
噂の買い切りVPS[CloudAtCost](http://www.cloudatcost.com/)に導入してみてもいいかもしれない。
25
26
# Jupyter環境の構築
27
28
ググると幾つか出てきますが、minicondaを使用したインストール方法を以下にまとめます。
29
30
minicondaを利用する利点としては、こんな感じです。
31
32
* 一般ユーザの環境に導入できる(システムに深く食い込まないので、アンインストールが簡単)
33
* 既存のPython環境と別々に作ることができ、かつ、お互いに干渉しない環境が簡単に作れる
34
* 容量が[anaconda](https://www.continuum.io/downloads)より小さく、必要最小限。
35
36
> minicondaは、主にPythonの数値処理系のライブラリを加えた[anaconda](https://www.continuum.io/downloads)というものの最小のセットになります。
37
38
## 想定する環境
39
40
以下を想定しています
41
42
* CentOS または RedHatLinux
43
44
実際にセットアップした環境は以下です。
45
46
~~~
47
CentOS Linux release 7.2.1511 (Core) 
48
~~~
49
50
## minicondaのインストール
51
52
以下からセットアップ用のファイルをダウンロードします。
53
python3用のセットアップファイルをダウンロードしてください。
54
55
miniconda
56
http://conda.pydata.org/miniconda.html
57
58
59
~~~
60
$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
61
~~~
62
63
>余談ですけど、このシェルスクリプト、バイナリファイルと悪魔合体する黒魔術を使っているので、catしてみたりすると大変な事になりますw
64
65
66
67
68
実行。
69
途中、対話形式で入力を求められますが、以下のよう入力してください。
70
71
~~~
72
$ bash Miniconda3-latest-Linux-x86_64.sh
73
[Enter]
74
yes
75
[Enter] # or 任意のインストール先を入力
76
no      # システムに標準で入っているPython環境と使い分けをしたいため。.bashrcに追加されてもいい人は yes にしておく。
77
~~~
78
79
インストール時にnoを選択して .bashrc に追加しなかったので、以下の通り、任意に環境変数をセットするシェルスクリプトを作成しておきます。
80
これによって、こんな環境の切り替えができます。
81
82
* 通常は、システムに入っているPythonが使われる。
83
* このシェルスクリプトを実行して環境変数を取り込んだときだけ、miniconda環境が使われる。
84
85
86
87
環境変数(PATH)設定用のシェルスクリプトを作る。
88
89
~~~
90
$ vi setenv.sh
91
#!/bin/bash
92
93
PATH=[minicondaのインストールディレクトリ]/miniconda3/bin:$PATH
94
export PATH
95
~~~
96
97
ドット実行する。
98
環境変数PATHの先頭に[minicondaのインストールディレクトリ]/bin が含まれていることを確認する。
99
100
~~~
101
$ . setenv.sh
102
$ env |grep PATH
103
PATH=[minicondaのインストールディレクトリ]/miniconda3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
104
~~~
105
106
## Jupyterのインストール(minicondaインストール先にインストールされる)
107
108
~~~
109
$ conda install jupyter
110
~~~
111
112
Jupyter設定ファイルの生成。
113
114
~~~
115
$ jupyter notebook --generate-config
116
~~~
117
118
パスワードの作成(結果をメモしておく)
119
120
以下はパスワードを hoge にしているけど、適宜変更してね。
121
122
~~~
123
$ python
124
Python 3.5.1 |Continuum Analytics, Inc.| (default, Dec  7 2015, 11:16:01) 
125
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
126
Type "help", "copyright", "credits" or "license" for more information.
127
>>> from notebook.auth import passwd
128
>>> passwd()
129
Enter password: hoge
130
Verify password: hoge
131
'sha1:86a104de86a2:d3f296d042d0be7c38df963b01670e51dd2ab081'
132
>>> quit()
133
~~~
134
135
Jupyter設定ファイルの編集
136
137
1. ローカルホストからしか接続を認めない→どこからでもOKに修正
138
2. Jupyterで書いたファイルの保存先を指定
139
3. 認証パスワードを設定(上記Pythonのpasswd()の事項結果をコピペ)
140
4. 接続先ポート番号を指定(デフォルトは8888)
141
142
~~~
143
$ cd ~/.jupyter
144
$ vi jupyter_notebook_config.py
145
146
- # c.NotebookApp.ip = 'localhost'
147
+ c.NotebookApp.ip = '*'
148
149
- # c.NotebookApp.notebook_dir = u''
150
+ c.NotebookApp.notebook_dir = u'ファイルを保存する任意のディレクトリ'
151
152
- # c.NotebookApp.password = u''
153
+ c.NotebookApp.password = u'sha1:86a104de86a2:d3f296d042d0be7c38df963b01670e51dd2ab081'
154
155
- # c.NotebookApp.port = 8888
156
+ c.NotebookApp.port = 8883
157
~~~
158
159
httpsて通信するための設定
160
161
 * Let's Encrypt サーバー証明書を取得しましょう。
162
 * 詳細は、[[ServersMan]]の Let's Encrypt サーバー証明書の取得と自動更新設定 を参照のこと。
163
 * 証明書が準備できたら、Jupyter設定ファイルの編集します。
164
165
1. サーバ証明書の所在を設定
166
2. 秘密鍵の所在を設定
167
168
~~~
169
$ cd ~/.jupyter
170
$ vi jupyter_notebook_config.py
171
172
- # c.NotebookApp.certfile = u''
173
+ c.NotebookApp.certfile = u'/etc/letsencrypt/live/<ドメイン名>/cert.pem'
174
175
- # c.NotebookApp.keyfile = u''
176
+ c.NotebookApp.keyfile = u'/etc/letsencrypt/live/<ドメイン名>/privkey.pem'
177
178
~~~
179
180
## Jupyterに Bash のJupyterカーネルを導入する
181
182
Jupyterカーネルと呼ばれる以下を追加インストールすることで、
183
Bash版Jupyterになるのでありえん良さみが深い(Python3環境が前提、Python2だどダメ)。
184
185
A bash kernel for IPython
186
https://github.com/takluyver/bash_kernel
187
188
~~~
189
$ . setenv.sh
190
$ pip install bash_kernel
191
$ python -m bash_kernel.install
192
~~~
193
194
実は、他のいろんな言語も用意されているので、大半の言語はJupyter上で動かす事ができる。
195
196
[参考:IPython kernels for other languages](https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages)
197
198
## Jupyterの起動
199
200
起動
201
202
~~~
203
$ jupyter-notebook
204
~~~
205
206
後はブラウザで、https://example.com:8883 にアクセスするべし。
207
208
209
## minicondaでPython2環境も作って共存させる場合
210
211
同じ方法でpython2環境も起動できる。
212
ただし、python3とpython2のJupyter環境を同時に起動するには、
213
Jupyter設定ファイルのポート番号を別々にする必要がある
214
215
~~~
216
$ vi jupyter_notebook_config_for_python2.py
217
218
- # c.NotebookApp.port = 8888
219
+ c.NotebookApp.port = 8882 # python3の設定値とは別にする
220
~~~
221
222
起動は、作った設定ファイルを直接指定して起動できる。
223
224
~~~
225
$ jupyter-notebook --config=設定ファイルのパス
226
~~~
227
228
# 使い方
229
230
使い方はググると沢山出てくるので、そちらに譲ります。
231
(当ページ下部のMemoの所にもリンクを入れておきました)
232
233
シェル芸人のためのJupyterの使い方を説明します。
234
235
## シェル芸人のためのJupyter使い方
236
237
まず、デフォルトのPythonカーネルでもシェル芸はできます。
238
行頭に%%bashと入力すればシェルを実行できます。
239
240
~~~
241
%%bash
242
date;echo hoge;date
243
~~~
244
245
![screenshot2.png](screenshot2.png)
246
247
ただ、カーネルを Bash に切り替えることで、この%%bashが不要になります。
248
あとは……わかるね?
249
250
~~~
251
date;echo hoge;date
252
~~~
253
254
![screenshot3.png](screenshot3.png)
255
256
# Memo
257
258
Jupyter関連で役立ちそうなリンクのメモ。
259
260
Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma
261
http://myenigma.hatenablog.com/entry/2016/02/20/183423
262
263
{{rawhtml(<a class="embedly-card" href="http://myenigma.hatenablog.com/entry/2016/02/20/183423">Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma</a><script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>)}}
264
265
266
Jupyter (iPython) Notebookを使ってプレゼンテーション資料を作る方法 - MyEnigma
267
http://myenigma.hatenablog.com/entry/2016/05/22/160209
268
269
{{rawhtml(<a class="embedly-card" href="http://myenigma.hatenablog.com/entry/2016/05/22/160209">Jupyter (iPython) Notebookを使ってプレゼンテーション資料を作る方法 - MyEnigma</a><script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>)}}
270
271
----
272
273
Qiita
274
275
Jupyter事始め - Qiita
276
http://qiita.com/taka4sato/items/2c3397ff34c440044978
277
278
extensionを追加してもっと快適なJupyter環境を構築する - Qiita
279
http://qiita.com/sasaki77/items/30a19d2be7d94116b237
280
281
Condaで作ってる仮想環境の切り替えをJupyter上で簡単に行う方法 - Qiita
282
http://qiita.com/yoppe/items/38005f415a5b8b884c7d
283
284
Jupyter Notebookでブログ書きたい - Qiita
285
http://qiita.com/patraqushe/items/49a990cbdfb51afed620
286
287
Jupyter notebook で HTML も自動作成 - Qiita
288
http://qiita.com/junkoda/items/011d44dcc1c8bd0a936a
289
290
Jupyterでコンテナーを入れ子の枠で表現(図式化)、とそれを作る過程で調べたこと - Qiita
291
http://qiita.com/argius/items/17710321c8225bfb7417
292
293
Jupyterで好きなHTMLを埋め込む - Qiita
294
http://qiita.com/xeno1991/items/65b7da476d6f89d06388
295
296
Qiitaの記事とJupyter notebokとの相互変換 - Qiita
297
http://qiita.com/Tsutomu-KKE@github/items/168400d2e3ea44a70022
298
299
iPython でスライド作り - Qiita
300
http://qiita.com/sosuke/items/e42b5b81878e361249b6
301
302
junpyter notebookをCUIで実行&保存 - Qiita
303
http://qiita.com/nzw0301/items/83814189bd93224b7c51
304
305
nbviewerでスライド表示もできるようになった!【Jupyter】 - Qiita
306
http://qiita.com/ssh0/items/de6cc6aacd004a2e57dd
307
308
データサイエンティストに向けたコーディング環境Jupyter Notebookの勧め - Qiita
309
http://qiita.com/y__sama/items/17aedf0c05187edd61c3
310
311
----
312
313
nbviewer - A simple way to share Jupyter Notebooks
314
http://nbviewer.jupyter.org/
315
316
once upon a time, - JupyterからSpark clusterを操作できるlivy + sparkmagicを試してみた
317
http://chezou.hatenablog.com/entry/2016/07/12/115000
318
319
Jupyter Notebook の Tips をまとめてみた
320
https://adtech.cyberagent.io/techblog/archives/2317