61
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeでJupyter Notebookを使ってみた【ゼロからPython勉強してみる】

Last updated at Posted at 2022-04-19

はじめに

前回、VSCodeを使用して簡単なプログラムを動かしてみた。
このまま続けて簡単なプログラムを何個か実際に動かしてみて勉強をしてみようと考えましたが、チラチラとノートブックが便利という旨の記事を目にしました。
また、VSCodeでPythonの拡張機能をインストールした時に一緒にインストールされたJupyterという拡張機能がそのノートブックの機能だということだそうです。

便利ならば使わない手はないということで、今回はJupyter Notebookについて勉強した内容を整理し、て実際に使ってみた状況を備忘録として残します。

ノートブックとはなんだ

まずそもそも、ノートブックとは何なのだろう?
正直なところ便利ということしかわからない。なので以下の記事を参考にどのような機能かを整理します。

詳しいことが知りたい場合は参考資料を参照するとして、ノートブックとは一つのファイル(.ipynb)にソースコードとその出力結果、Markdown形式のメモをまとめて管理できるものらしい。
そして、このファイル自体がノートブックの実体のようです。
ソースコード中でも#を使ってメモを記入できますが、長々とメモを書くとソースコードも汚くなりそうですし非常に便利な機能に感じます。

このノートブックを利用できるサービスはクラウド上で使用できるColaboratoryやwebアプリ版のJupyter Notebookなど複数あり、今回はVSCode上でJupyter Notebookの機能を使える拡張機能を使用します。

さっそく使ってみる

ノートブックが何か大まかに理解できたので早速VSCode上でJupyter Notebookの環境を使ってみます。拡張機能については2022年4月時点ではPythonの拡張機能(Python extension for Visual Studio Code)をインストールした際に標準でインストールされました。

参考

パッケージを追加する

VSCode上でJupyter Notebookを利用してコードを実行するには実行環境にJupyterパッケージのインストールが必要らしい。

モジュールとは?
例えで言うなら「部品」や「歯車」に当たります。 もっと具体的に言うなら拡張子が「.py」のファイルは全てPythonモジュールとなります。
パッケージとは?
モジュールの集まったものがパッケージとなります。 例えで言うなら、「箱」ですね。
ライブラリとは?
パッケージをいくつかまとめてインストールできるようにしたものです。

引用:https://qiita.com/_whitecat_22/items/3df18491c5f618c016d1

仮想環境を作成する

パッケージを実行環境にインストールする際には、パッケージ等の組み合わせ等によりプログラムが動かなくなることを避けるため、プロジェクトの用途に応じて仮想環境を作成し、仮想環境に必要なパッケージをインストールし開発を行うことが望ましいらしい。

ということで仮想環境を作成してみます。
仮想環境を作る方法はPythonのバージョンを指定したり様々あるようですが、今回はVSCode上でターミナルを開いてvenvというPythonの機能を使って作成します。

参考

まず、仮想環境を作成するディレクトリを作成します。
今回はC:\WorkSpace\Python\venvというディレクトリを作成し、その中に仮想環境を作成することにしました。

VSCodeでファイルフォルダーを開く…C:\WorkSpace\Python\venvを選択して作業フォルダを設定し、空のソースファイルを作成します。
作成したらターミナル新しいターミナルでターミナルを開きます。
仮想環境_1.png

空のソースファイルの作成はVSCodeの言語モードをPythonにして、ステータスバーにインタープリタ等を表示させるためです。別に作らなくても仮想環境は作成できます。

ターミナルにPython -m venv [仮想環境名]と入力しエンターキーを押すと、仮想環境がC:\WorkSpace\Python\venv内に作成されます。
今回はJupyter Notebookを使ってみる用の仮想環境なので名前をJupyterにします。

作成した仮想環境を適用するかを聞かれますので、ここでyesを押して適用してもよいですが、今回は以下の方法で適用させます。
仮想環境_2.png

VSCodeの下の方にあるステータスバーに現在選択されているインタープリタが表示されているのでそこをクリックします。
するとインタープリタを選択する画面が出てくるので先ほど作成したJupyterという名前の仮想環境を選択します。

VSCodeのバージョンによっては現在のインタープリターが表示される位置が異なっている可能性もあります。
メニューバーの表示コマンドパレットでコマンドパレットを開きPython: Select Interpreterのコマンドからでもインタープリタ選択画面は開けます。

仮想環境_3.png

ステータスバーの表示が作成した仮想環境になっているのを確認したら、ターミナル新しいターミナルで新たにターミナルを開きます。
プロンプトの先頭に(Jupyter)と仮想環境名が表示されているので、仮想環境がアクティブな状態でターミナルが開かれています。
仮想環境_4.png

パッケージのインストール

仮想環境の作成に成功したので、作成した仮想環境に早速Jupyterのパッケージをインストールしてみます。
パッケージのインストールや管理を行う際には、pip、condaなどのパッケージのマネージャーを用いるとのことだが、今回はPythonに標準で搭載されているpipを使用します。

参考

はじめに、現状でインストールされているパッケージを表示してみます。
仮想環境がアクティブな状態でターミナルにpip listというコマンドを入力し実行します。
下の画像のようにパッケージ一覧が表示されますが、「pip」と「setuptools」のみインストールされてることがわかりました。
仮想環境_5.png

Jupyterのパッケージをインストールします。pipでインストールを行う際のコマンドはpython -m pip install [パッケージ名]なのでpython -m pip install jupyterと入力して実行します。

仮想環境がアクティブな場合、環境変数の先頭に仮想環境のパスが自動追加され、コマンドからPythonを実行する際に仮想環境内のものを優先的に使用するようになるらしいので、上記のPython -m pippipに置き換えれるらしい。
試しにwhere.exe hogeでPythonとpipのexeを探してみると検索結果の一番上に作成した仮想環境のexeのディレクトリが表示されている。
仮想環境_6.png

参考
https://endy-tech.hatenablog.jp/entry/how_venv_works_in_python
https://win2012r2.com/2022/02/17/windows-where/

※powershellを利用しているためwhere.exe hogeだが、コマンドプロンプトではwhere hogeでよい。powershellでwhere hogeでは動かない。

python -m pip install jupyterを実行すると大量の文字が表示されますが、しばらくするとパッケージのインストールが終了します。
仮想環境_7.png

pip listで確認してみるとJupyterのパッケージインストールに伴いその他大量のパッケージもインストールされていますが、しっかりJupyterのパッケージがインストールされていることが確認できます。(jupyter-client等もまとめて赤枠で囲んでしまっていますが、jupyter以外はあくまでjupyterってパッケージの機能使うのに必要なパッケージ達です。)

仮想環境_8.png

ノートブックを作成してコードを記述してみる。

横道にそれまくっていたので長くなりましたが、VSCode上でJupyter Notebookを使う準備が整いました。
今のままだとカレントディレクトリがC:\WorkSpace\Python\venv(仮想環境をまとめるようにつくったフォルダ)なので前回作成したC:\WorkSpace\Python\Practiceに設定しておきました。

ノートブック作成

ノートブックを作成するには、サイドバーでエクスプローラーの画面を開き、新しいファイルからノートブックを作成するか、
Animation1.gif
コマンドパレットからCreate: New Jupyter Notebookを実行します。ただしコマンドパレットから作成された際はタブは追加されますがファイルとして保存されていないため必要に応じて保存します。
Animation2.gif

カーネルの選択

ノートブックを作成したらカーネルを選択します。
カーネルとはノートブックの内容を実行するためのものでノートブック単位でカーネルを設定できる。

作成したノートブックのタブの右上の方にカーネルの選択というボタンがあるのでクリックしてカーネルを選択する。
今回は今回作成した仮想環境を選択する。
Animation3.gif

コード、マークダウンの記述と実行

カーネルを選択したのでコードを実行できるようになりました。
コードやマークダウン形式でのメモを記入するのは下の画像で大きな赤枠で囲まれた中にあるセルという部分で、下の画像ではコードを記入するセルとマークダウンを記入するセルが表示されている。仮想環境_9.png

試しにセルにコードを入力して実行してみる。
入力したいセルを選択し、コードを入力します。今回はprint("hello,jupyter")と入力、セルの内容ははセル左側に表示されるセルの実行ボタンで実行できる。
Animation4.gif

今度はマークダウン記法でメモを書いてみる。
先ほどと同様にセルに記述し、セル右側にあるセルの編集を停止ボタンを押すと入力した内容が表示される。
Animation5.gif

これでVSCode上でJupyter Notebookを動かせることを確認できましたので、今回はここまで。
Jupyter Notebookの他の機能等を使ってみたら追記します。

【追記】ノートブックをPDFにエクスポートしてみた

Jupyter NotebookにはノートブックをPythonのスクリプトや、HTML、PDFの形式にエクスポートする機能があるので使ってみたいと思います。
私は色々よく読まずに使おうとして、ちゃんとPDFの出力が出来るまでに少し苦労したので何をやらかしてうまく動かなかったのかも含めて整理しました。

参考

使い方

ノートブックを開いているタブの上の方にある「その他の操作…」ボタンから「Export」を選択して変換したい形式を選択します。ダイアログが立ち上がるので保存したい場所を選択してファイル名を入力したら「Export」ボタンを押します。とってもお手軽です。

何も考えず使ってみたらちゃんと動かなかった

jupyterの拡張機能とモジュールを入れておけば一応この機能を実行できる。
ただ、詳しくは後述するがこの機能は変換する処理で他のソフトウェアを利用するため、それらがインストールされていないと変換ができない。下の画像はそれらがインストールされていない状況でエクスポート機能を実行した様子です。エラー通知が出てPDFも出力されていません。
私はそんなことを知らずに変換できずに困っていました。

Animation4.gif

Jupyter Notebookのログを見てみると、それなりに長いエラーメッセージがありますが、その中に以下のようなメッセージがあります。
英語は苦手なのでなんか嫌な感じがしますが、要するに「XeLaTeX」と「Pandoc」ってソフトウェアが見つからないからインストールしてねって言ってます。

nbconvert.utils.pandoc.PandocMissing: Pandoc wasn't found.
Please check that pandoc is installed:
https://pandoc.org/installing.html
Error 16:56:44: If you have not installed xelatex (TeX) you will need to do so before you can export to PDF, for further instructions go to https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex. 

解決方法

必須ソフトウェアのインストール

少し調べてみたらこのノートブックの変換はnbconvertというツールがやってくれているらしく、nbconvertの公式ページを見たら思いっきり必須ソフトの説明が書いてありました。
先ほどのエラー文で言われたように「pandoc」と「XeLaTeX」が必須のようです。(XeTeX処理系で動くLaTeXはXeLaTeX)
なのでインストールしていきましょう。

pandocのインストール

まず、pandocをインストールしていきます。インストールする順番はどっちが先でも問題ありません。
ちなみにノートブック内にマークダウン記法での記載をしたセルがなければインストールしなくても変換はできました。

ちなみにPythonのパッケージとしてpandocという名前のものもあるが、nbconvertで使用されるpandocとは別物。
pip install pandocで処理系の環境にこのパッケージをインストールしても勿論nbconvertは機能しない。

pandocとは

pandocとは色んな形式のドキュメントを違う形式のドキュメントに変換してくれるソフトウェアのようです。
nbconvertはpandocを使ってノートブックを一度.tex形式に変換してそこからPDFに変換しているみたいです。

Pandocは、あるマークアップ形式から他の形式へ変換する Haskell ライブラリと、そのライブラリを用いたコマンドラインツールです。

Pandoc は、 Markdown 、 HTML 、LaTeX 、 Word docx など、これに限定されない多数のマークアップとワープロ形式の間で変換することができます。入力および出力形式の完全なリストについては、下記 (options below) の --from と --to を参照してください。 Pandoc は PDF 出力を生成することもできます。下記の creating a PDF を参照してください。
引用:https://pandoc-doc-ja.readthedocs.io/ja/latest/users-guide.html

インストール方法

pandocの公式ページからインストーラーを入手してインストールします。

2022-04-22_20h29_41.png
2022-04-22_20h33_29.png

ダウンロードしたらインストーラーを起動します。
起動したらチェックを入れてライセンスに同意して赤点線の枠で囲んだボタンを押しす。
「Install for all users of this machine」の項目は他のユーザーでもpandocを利用できるようにするかしないかですが、チェック入れるかは使用環境によってでしょうか、私はチェックを入れました。
2022-04-22_20h37_00.png
この画面が表示されたらインストールは完了です。
赤枠の部分にインストールされたディレクトリが表示されています。
これは後で使うので覚えておきます。
2022-04-22_20h39_15.png

pandocのPATHを通す

pandocのインストールは完了しましたが、nbconvertでpandocの機能を利用する際にはpandocのPATHを通しておかないと内部的な処理の際にpandocがインストールされていないと認識されてエラーを吐かれたでPATHを通します。
PATHを手動で通す方法は色々ありますので各自慣れた手法ですればよいと思います。
一例として以下の記事をご参照ください。
「パスを通したい実行ファイルが存在するフォルダのパス」は先程覚えていてインストール完了した際に表示されたディレクトリ(私の場合はC:\Program Files\Pandoc)です。

コマンドプロンプトを起動して、where pandocと入力後実行してディレクトリが表示されたらPATHが通っています。
path.png

XeLaTeXのインストール

続けてXeLaTeXのインストールをしていきます。

XeLaTeXとは

細かい説明は省きますが、XeLaTeXというのはTeX言語の処理系であるXeTeX上で動くマクロ体系のようです。
細かいことは以下のページ、サイトの解説がわかりやすかったです。

ディストリビューションを使用してインストールする

とにかくXeLaTeXをインストールしないといけないのですが、処理系をインストールしたりその他必須のマクロ体系をインストールしたりと環境を手作業で一つ一つ整えるのは難しいです。
なので処理系やマクロ体系関連プログラムをインストール、管理などをしてくれるディストリビューションを利用します。
PythonでいうAnacondaです。

TeXのディストリビューションは色々あるらしく、nbconvertの公式ページではWindows向けにMiKTeXを紹介していますが、日本国内ではTeX Liveというものが広く使われているのでこっちを使います。
(詳しくは調べていないがTeX Liveの方が日本語に強そうな印象でググったときに記事の数が多いような印象を受けた。)

TeX Liveはデフォルトでインストールするファイルが多いので私の環境ではインストールに1時間弱かかりました。
pythoの勉強でメインで使っているPCとは別のサブPCでMiKTeXを使ってみたのですが、こっちはインストールはすぐ終わりました。MiKTeXでも問題はないのでここは好みかと思います。

ISOを入手する

TeX Liveのインストールはネットワークインストーラーを使う方法か、配布されているDVD、ISOファイルのローカルインストーラーを使うかがあります。インストールするファイルが多くネットワーク経由だと時間がかかると聞いたのでISOをダウンロードしてインストールします。
(インストールされるファイルが7GB程度でISO自体も4GBあるのでISOをダウンロードする時間考えるとどっちが早いのかどうなのか試してないのでわかりませんが。。。)
詳しくは以下を参照。

ISOは上にリンクを貼ったここのサイトからダウンロードできます。
Animation1.gif

install-tl-windows.batを起動する

ISOをダウンロードしたら仮想DVDドライブにマウントします。
マウントはWindows7以降なら標準でできるらしい。ISOファイルを開く標準のプログラムがエクスプローラーになっていればファイルをダブルクリックするか、右クリックマウントで開けるし、エクスプローラー以外が標準のプログラムになっていても右クリックプログラムから開くエクスプローラーでも開けました。
2022-04-24_15h24_39.png
開いたら中にあるinsrall-tl-windows.batを実行してインストーラーを起動します。

2022-04-24_15h33_09.png

インストーラーが起動したら必要に応じてインストール先などをせっていしますが、私はデフォルトのままインストールを実行しました。

2022-04-24_15h37_33.png

インストールを開始するとこんな感じのwindowが現れてインストールが進みます。(展開すると7GBくらい容量があるのでそこそこ時間がかかります。)
2022-04-24_15h39_09.png

無事終了したらこんな画面になるので閉じるを押してインストールは完了です。
2022-04-24_16h20_00.png

一応この段階でPDFの出力はできたのですが、ISOでインストールした際は中身が古い可能性があり諸々をアップデートした方がよいとのことなので作業します。
TeX Liveをインストールすると「TLShell TeX Live Manager(tlshell.exe)」というGUIアプリケーションもインストールされ、これを使えばGUI上でパッケージのインストール、アップグレード等の管理を行えます。
スタートメニュー等から起動すると以下のような画面が出てくるのでファイルリポジトリを読み込むを選択します。
Animation1.gif

リポジトリが読み込まれるとtlmgr(パッケージ管理ツール、pipのようなもの)のバージョンが最新かどうかと、インストールされているパッケージのアップデート可否などが分かります。
私の画面では最新の状態にアップデートしたばかりなのでグレーアウトしていますが、ISOからインストールした場合は大体tlmgr及び各種パッケージのアップデートが可能だと思いますので、tlmgrをアップデートでtlmgrを最新にしてからすべてをアップデートでパッケージを最新にします。

なおこの作業はコマンドラインからtlmgr update --selftlmgr update --self --allを実行しても可能です。

サブPCでの話
MiKTeXでもうまくPDF出力できることを確認した後、メイン環境に合わせるためMikTeXアンインストールしてTeX Liveをインストールしたところ、アップデートの段階でうまくいかず、nbconvertでのPDF変換もできなくなった。
アンインストールしてTeX Live 2022のISOからインストールしてそのままの状態でやってみたらうまくPDFに変換しできました。
これについては私がうまくアップデートできなかったのかもよく理解していないので今後どうにかしたい。

参考

変換してみる

要求されているものをインストールしたので変換を再度やってみたところ、日本語が抜けているがそれ以外は問題なくPDFに出力された。

Animation2.gif

日本語出力に対応させる

サブPC環境では特段設定せずに日本語出力が何故かできてしまったのですが、通常はnbconvertで日本語が含まれたノートブックをPDFにするには設定ファイルを少し編集する必要があるようです。
メイン環境ではもちろん上記のように日本語が出力されていなかったので設定をしてみます。

参考

まずは編集すべき設定ファイルを探します。
VSCodeで仮想環境フォルダ(私はC:\WorkSpace\Python\venv\Jupyter)を開き、documentclassと検索すると検索結果がずらずらと出てきます。
Animation3.gif

編集するのはindex.tex.j2というファイル名で内容は以下のようになっているはずです。
私はC:\WorkSpace\Python\venv\Jupyter\share\jupyter\nbconvert\templates\latex\index.tex.j2にありました。


((=- Default to the notebook output style -=))
((*- if not cell_style is defined -*))
    ((* set cell_style = 'style_jupyter.tex.j2' *))
((*- endif -*))

((=- Inherit from the specified cell style. -=))
((* extends cell_style *))


%===============================================================================
% Latex Article
%===============================================================================

((*- block docclass -*))
\documentclass[11pt]{article}
((*- endblock docclass -*))

ファイルを見つけたらファイルをコピーしてリネームしておくなどで念のためバックアップをとってから上記の16行目の記述を以下のように書き換えて保存します。(VSCodeの検索画面でindex.tex.j2をクリックしたらエディタが開くのでそのまま編集できました。)

\documentclass[11pt]{article}
↓
\documentclass[a4paper,xelatex,ja=standard]{bxjsarticle}

ファイルを保存してから再度PDFを出力してみたら今度はしっかりと日本語も表示されています。

2022-04-26_13h05_08.png

以上で設定は終了です。先ほどのファイルを編集することで日本語のフォント等も選択できるようですが、私は現状でとりあえず満足なので詳しくは参考先のページを参照してください。

61
71
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?