Cài đặt Jupyter Notebook win 10

written by htl on 2016-06-06

Jupyter là gì?

Là nền tảng tính toán khoa học mã nguồn mở, interactive, hỗ trợ hơn 40 ngôn ngữ lập trình, trong đó có python (jupyter = julia + python + R). Bài này tập trung vào việc cài đặt, sử dụng jupyter notebook trong lập trình python, cụ thể là giảng dạy python bằng jupyter. Bên cạnh đó, mình thường sử dụng jupyter notebook làm môi trường chạy thử code python ở dạng interactive, trước khi lưu vào script (Biết kết quả từng bước mình làm vẫn thích hơn nhỉ - đó là điểm mạnh của interactive).

Jupyter notebook

Trước đây là ipython notebook, đổi tên thành jupyter notebook với mục tiêu hỗ trợ nhiều ngôn ngữ hơn. Là ứng dụng chạy trên nền web cho phép chạy interactive python (tương tự ipython). Hơn thế nữa, nó còn hỗ trợ vẽ các đồ thị, biểu đồ, hỗ trợ viết 1 "notebook" bằng cách sử dụng Markdown

Cài đặt jupyter notebook

Trên Windows làm theo hướng dẫn này

Trên các hệ điều hành khác, yêu cầu máy đã cài python 3, pip và virtualenv.

1. Tạo virtualenv để chạy riêng jupyter:

╭─ ~ ╰─$ virtualenv -p $(which python3) jupyter Running virtualenv with interpreter /usr/local/bin/python3 Using base prefix '/usr/local' New python executable in /home/htl/jupyter/bin/python3 Also creating executable in /home/htl/jupyter/bin/python Installing setuptools, pip, wheel...done.

2. Kích hoạt virtualenv vừa tạo:

╭─ ~ ╰─$ source ~/jupyter/bin/activate (jupyter) ╭─ ~ ╰─$

3. Cài jupyter notebook:

(jupyter) ╭─ ~ ╰─$ pip install jupyter notebook Collecting jupyter Using cached jupyter-1.0.0-py2.py3-none-any.whl Collecting notebook Using cached notebook-4.2.1-py2.py3-none-any.whl Collecting nbconvert (from jupyter) Using cached nbconvert-4.2.0-py2.py3-none-any.whl Collecting qtconsole (from jupyter) Using cached qtconsole-4.2.1-py2.py3-none-any.whl Collecting ipykernel (from jupyter) Using cached ipykernel-4.3.1-py2.py3-none-any.whl Collecting jupyter-console (from jupyter) Using cached jupyter_console-4.1.1-py2.py3-none-any.whl Collecting ipywidgets (from jupyter) Using cached ipywidgets-5.1.5-py2.py3-none-any.whl Collecting jinja2 (from notebook) Using cached Jinja2-2.8-py2.py3-none-any.whl Collecting traitlets (from notebook) Using cached traitlets-4.2.1-py2.py3-none-any.whl Collecting nbformat (from notebook) Using cached nbformat-4.0.1-py2.py3-none-any.whl Collecting jupyter-client (from notebook) Using cached jupyter_client-4.2.2-py2.py3-none-any.whl Collecting tornado>=4 (from notebook) Collecting terminado>=0.3.3; sys_platform != "win32" (from notebook) Collecting ipython-genutils (from notebook) Using cached ipython_genutils-0.1.0-py2.py3-none-any.whl Collecting jupyter-core (from notebook) Using cached jupyter_core-4.1.0-py2.py3-none-any.whl Collecting mistune!=0.6 (from nbconvert->jupyter) Using cached mistune-0.7.2-py2.py3-none-any.whl Collecting pygments (from nbconvert->jupyter) Using cached Pygments-2.1.3-py2.py3-none-any.whl Collecting entrypoints (from nbconvert->jupyter) Using cached entrypoints-0.2.2-py2.py3-none-any.whl Collecting ipython>=4.0.0 (from ipykernel->jupyter) Using cached ipython-4.2.0-py3-none-any.whl Collecting widgetsnbextension>=1.2.3 (from ipywidgets->jupyter) Using cached widgetsnbextension-1.2.3-py2.py3-none-any.whl Collecting MarkupSafe (from jinja2->notebook) Collecting decorator (from traitlets->notebook) Using cached decorator-4.0.9-py2.py3-none-any.whl Collecting jsonschema!=2.5.0,>=2.0 (from nbformat->notebook) Using cached jsonschema-2.5.1-py2.py3-none-any.whl Collecting pyzmq>=13 (from jupyter-client->notebook) Using cached pyzmq-15.2.0-cp35-cp35m-manylinux1_x86_64.whl Collecting ptyprocess (from terminado>=0.3.3; sys_platform != "win32"->notebook) Using cached ptyprocess-0.5.1-py2.py3-none-any.whl Collecting pexpect; sys_platform != "win32" (from ipython>=4.0.0->ipykernel->jupyter) Using cached pexpect-4.1.0-py2.py3-none-any.whl Requirement already satisfied (use --upgrade to upgrade): setuptools>=18.5 in ./jupyter/lib/python3.5/site-packages (from ipython>=4.0.0->ipykernel->jupyter) Collecting simplegeneric>0.8 (from ipython>=4.0.0->ipykernel->jupyter) Collecting pickleshare (from ipython>=4.0.0->ipykernel->jupyter) Using cached pickleshare-0.7.2-py2.py3-none-any.whl Collecting backports.shutil-get-terminal-size (from ipython>=4.0.0->ipykernel->jupyter) Using cached backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl Installing collected packages: MarkupSafe, jinja2, decorator, ipython-genutils, traitlets, mistune, pygments, jupyter-core, jsonschema, nbformat, entrypoints, nbconvert, pyzmq, jupyter-client, ptyprocess, pexpect, simplegeneric, pickleshare, backports.shutil-get-terminal-size, ipython, tornado, ipykernel, qtconsole, jupyter-console, terminado, notebook, widgetsnbextension, ipywidgets, jupyter Successfully installed MarkupSafe-0.23 backports.shutil-get-terminal-size-1.0.0 decorator-4.0.9 entrypoints-0.2.2 ipykernel-4.3.1 ipython-4.2.0 ipython-genutils-0.1.0 ipywidgets-5.1.5 jinja2-2.8 jsonschema-2.5.1 jupyter-1.0.0 jupyter-client-4.2.2 jupyter-console-4.1.1 jupyter-core-4.1.0 mistune-0.7.2 nbconvert-4.2.0 nbformat-4.0.1 notebook-4.2.1 pexpect-4.1.0 pickleshare-0.7.2 ptyprocess-0.5.1 pygments-2.1.3 pyzmq-15.2.0 qtconsole-4.2.1 simplegeneric-0.8.1 terminado-0.6 tornado-4.3 traitlets-4.2.1 widgetsnbextension-1.2.3 (jupyter) ╭─ ~ ╰─$

4. Khởi động jupyter notebook:

(jupyter) ╭─ ~ ╰─$ jupyter notebook [I 21:06:04.603 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 21:06:04.900 NotebookApp] Serving notebooks from local directory: /home/htl [I 21:06:04.901 NotebookApp] 0 active kernels [I 21:06:04.901 NotebookApp] The Jupyter Notebook is running at: //localhost:8888/ [I 21:06:04.901 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

Trình duyệt web mở ra tại địa chỉ: //localhost:8888 vào môi trường jupyter notebook.

Sử dụng jupyter cơ bản:

  • Bấm New -> Python 3 để tạo 1 Python 3 notebook mới

  • 1 Notebook bao gồm nhiều cell, mỗi cell có thể ở dạng code, markdown hoặc raw (thường dùng codemarkdown). Cell có hỗ trợ syntax highlighting tùy vào trạng thái code hoặc markdown.

  • Khi thấy con trỏ nhấp nháy trong cell, bạn đang ở edit mode. Để chuyển sang command mode, bấm esc, khi đó bạn có thể di chuyển giữa các cell bằng các phím mũi tên, hoặc thao tác với các cell bằng các phím tắt như:

    enter - chuyển sang edit mode a - insert cell above b - insert cell below c - copy cell x - cut cell v - paste cell below shift + v - paste cell above dd - delete cell m - chuyển cell sang dạng markdown y - chuyển cell sang dạng code l - bật/tắt line number ... h - bật help để xem phím tắt
  • Một số phím tắt khi ở edit mode:

    tab/shift + tab - indent/dedent vùng được chọn shift + tab khi con trỏ ở trong `( )` - hiện help của 1 function, có thể bấm 1, 2, 3, 4 lần để xem chi tiết hơn hỗ trợ multi-cursor bằng cách giữ ctrl + bấm chuột vào các vị trí cần đặt cursor
  • Khi đang ở edit mode, muốn xem help mà ko muốn ( ) rồi bấm shift+tab thì gõ command?, ví dụ len? rồi shift + enter

  • Code cell hỗ trợ auto complete code bằng phím tab

  • Sau khi gõ code trong 1 cell, có thể chạy cell bằng 1 trong các cách:

shift+enter: chạy code đó và chọn 1 cell ở dòng dưới (nếu chưa có sẽ tự thêm và chọn cell mới) alt+enter: chạy code và thêm 1 cell ở dưới ctrl+enter: chạy code
  • Ngoài việc chạy được python code, 1 code cell có thể chạy được magic commands, hoặc chạy shell command bằng dấu !, ví dụ:
In [1]: ! cat /etc/passwd root:x:0:0:root:/root:/bin/zsh bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt

(Mình đã dùng ! để chay wget và cả pip nữa, lol)

Cơ bản đủ để dùng giảng dạy python. Tìm hiểu thêm tại: ipython documentation hoặc jupyter documentation

Happy coding python!

P/S: Có thể dùng jupyter để tạo file.py (New -> Text file) hoặc bất cứ file gì (tạo xong đổi tên), ví dụ như mình dùng jupyter để tạo file.md để viết blog này chẳng hạn.

Chủ đề