シェルコマンドは Windows のコマンドプロンプトや Mac, Linux のターミナルで利用できるコマンドです.シェルコマンドは Jupyter Notebook 内で実行できますが,OS ごとに利用できるシェルコマンドが異なるので注意が必要です.一方で,マジックコマンドも Jupyter Notebook 内で実行できるコマンドですが,IPython (Jupyter Notebook) のカーネルによって提供されるので,OS が異なってもマジックコマンドは同じです(ただし,オプショナル引数の設定方法などが異なる場合があります).
Windows でシェルコマンドを実行するには先頭に !
を入力して,その後にコマンドプロンプトで利用できるコマンドを入力します.実行時はやはり Shift + Enter を押します.例えばカレントディレクトリ(フォルダ)にあるフォルダとファイル一覧を表示する dir
コマンドを Juypter Notebook 内で実行することができます.
!dir
ドライブ C のボリューム ラベルは OS です ボリューム シリアル番号は 9018-19A1 です C:\Users\Rinsaka\Documents\Python\magic のディレクトリ 2022/01/31 14:43 <DIR> . 2022/01/31 14:43 <DIR> .. 2022/01/31 14:30 <DIR> .ipynb_checkpoints 2022/01/31 14:29 36,279 magicコマンド.ipynb 2022/01/31 14:29 30 shell.py 2 個のファイル 36,309 バイト 3 個のディレクトリ 47,552,335,872 バイトの空き領域
Windows 利用時には Windows のコマンドが利用できるので,Mac のコマンド ls
は実行できません.
!ls
'ls' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
1行の Python ファイルを同じフォルダに準備したあと,ファイルの中身を確認します.
!type shell.py
print("Hello, shell command!")
コマンドプロンプトで Python プログラムを実行する方法を使って,Jupyter Notebook 内で Python の外部コードを実行します.
!python shell.py
Hello, shell command!
ファイルをコピーしてみます.
!copy shell.py shell-2.py
1 個のファイルをコピーしました。
ファイルがコピーされたことを確認します.
!dir
ドライブ C のボリューム ラベルは OS です ボリューム シリアル番号は 9018-19A1 です C:\Users\Rinsaka\Documents\Python\magic のディレクトリ 2022/01/31 14:43 <DIR> . 2022/01/31 14:43 <DIR> .. 2022/01/31 14:30 <DIR> .ipynb_checkpoints 2022/01/31 14:29 36,279 magicコマンド.ipynb 2022/01/31 14:32 30 shell-2.py 2022/01/31 14:29 30 shell.py 3 個のファイル 36,339 バイト 3 個のディレクトリ 47,552,270,336 バイトの空き領域
Mac でシェルコマンドを実行するときも Windows と同様に先頭に !
を入力して,その後にターミナルで利用できるコマンドを入力します.実行時はやはり shift + return を押します.例えばカレントディレクトリ(フォルダ)にあるフォルダとファイルの一覧を表示する ls
コマンドを Juypter Notebook 内で実行することができます.
!ls
magicコマンド.ipynb shell.py
Mac 利用時には Mac のコマンドが利用できるので,Windows のコマンド dir
は実行できません.
!dir
zsh:1: command not found: dir
1行の Python ファイルを同じフォルダに準備したあと,ファイルの中身を確認します.
!cat shell.py
print("Hello, shell command!")
ターミナルで Python プログラムを実行する方法を使って,Jupyter Notebook 内で Python の外部コードを実行します.
!python shell.py
Hello, shell command!
ファイルをコピーしてみます.
!cp shell.py shell-2.py
ファイルがコピーされたことを確認します.
!ls
magicコマンド.ipynb shell-2.py shell.py
マジックコマンドは Jupyter Notebook 内で利用可能なコマンドです.マジックコマンドを利用するには先頭に %
,または %%
を入力します.マジックコマンドでは例えばプログラムの実行時間を計測することができます.なお,先頭に %time
を入力するとラインマジック(行マジック)コマンドとなり,その行の実行時間を計測します.
%time sum(range(100000000))
CPU times: user 6 µs, sys: 30 µs, total: 36 µs Wall time: 13.8 µs 4999999950000000
先頭に %%time
を入力するとセルマジックコマンドとなり,そのセル全体の実行時間を計測します.まずは,math
ライブラリをインポートしておきます.
import math
セル全体の実行時間を計測してみます.
%%time
n = 10000000
y = [0] * n
for i in range(0, n):
y[i] = math.sqrt(i)
CPU times: user 1.44 s, sys: 89.7 ms, total: 1.53 s Wall time: 1.56 s
次の場合は先頭行 n = 10000000
の実行時間を計測しているため,繰り返し処理の計算時間を計測できておらず,上の結果と比較すると計測された計算時間が数十万分の一程度になっていることに注意してください.
%time n = 10000000
y = [0] * n
for i in range(0, n):
y[i] = math.sqrt(i)
CPU times: user 3 µs, sys: 1e+03 ns, total: 4 µs Wall time: 7.87 µs
処理を何度か繰り返して処理時間の平均値やばらつき(標準偏差)を計測したいときには %timeit
や %%timeit
を使います.
%timeit sum(range(10000))
143 µs ± 817 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%%timeit
n = 10000000
y = [0] * n
for i in range(0, n):
y[i] = math.sqrt(i)
1.09 s ± 25.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
マジックコマンドの一覧は %lsmagic
で確認できます.
%lsmagic
Available line magics: %alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %conda %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode Available cell magics: %%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile Automagic is ON, % prefix IS NOT needed for line magics.
上の結果を確認すると,Windows でも %ls
コマンドが使えることがわかりました.このマジックコマンドを実行すると,内部的には dir
コマンドが実行されるようです.
%ls
ドライブ C のボリューム ラベルは OS です ボリューム シリアル番号は 9018-19A1 です C:\Users\Rinsaka\Documents\Python\magic のディレクトリ 2022/01/31 14:43 <DIR> . 2022/01/31 14:43 <DIR> .. 2022/01/31 14:30 <DIR> .ipynb_checkpoints 2022/01/31 14:37 36,279 magicコマンド.ipynb 2022/01/31 14:32 30 shell.py 2022/01/31 14:29 30 shell-2.py 3 個のファイル 36,339 バイト 3 個のディレクトリ 47,545,159,680 バイトの空き領域
Mac で %ls
コマンドを使うと,シェルの ls
が実行されるようです.
%ls
magicコマンド.ipynb shell-2.py shell.py
マジックコマンドの使い方の詳細を調べたいときには ?
を使うと良いでしょう.
?%%markdown
Docstring: Render the cell as Markdown text block
Windows で Anaconda プロンプトや Mac でターミナルを起動することなく,Juypter Notebook の中でライブラリのインストールを実行することも可能です.まず,%pip list
でインストール済みのライブラリを確認します.
%pip list
Package Version ---------------------------------- ----------------- absl-py 0.8.1 (省略)
例えば,ortoolpy
をインストールします.なお,インストール完了後は「Kernel」→「Restart」を実行しなければ利用できないことがあります.
%pip install ortoolpy
Collecting ortoolpy (中略) Installing collected packages: ortoolpy Successfully installed ortoolpy-0.2.38 Note: you may need to restart the kernel to use updated packages.
インストールできたかどうかをチェックします.上と同じように%pip list
の結果から探しても良いが,検索で絞り込む事もできます.Windows の場合は次のように入力します.
%pip list | find "ortoolpy"
ortoolpy 0.2.38
Mac の場合は次のように入力します.
%pip list | grep ortoolpy
ortoolpy 0.2.38