Jupyter Notebookは非常に便利なツールですが、コマンドライン引数を使うプログラムをJupyterで編集しようとすると問題が発生します。しかし、その問題を解決する方法があります。
argparseの問題と解決策
Pythonのargparseモジュールを使ってコマンドライン引数を処理するプログラムをJupyter Notebookで実行しようとすると、以下のようなエラーメッセージが表示されることがあります。
usage: ipykernel_launcher.py [-h] [--batchsize BATCHSIZE] [--communicator COMMUNICATOR] [--epoch EPOCH] [--gpu] [--out OUT] [--resume RESUME] [--unit UNIT]
ipykernel_launcher.py: error: unrecognized arguments: -f /run/user/1218/jupyter/kernel-662a3733-81e6-4d71-9647-27185d96086a.json
この問題は、Jupyter Notebookがコマンドライン引数を処理できないために発生します。しかし、この問題を解決する方法があります。
解決策
argparseのparse_args()
関数を次のように変更します。
args = parser.parse_args(args=[])
これだけで、同様のエラーが出なくなり、コマンドラインで実行しているようにJupyter上で実行できます。
引数の指定方法
引数の指定がある場合は、arg=[]
の[]
内にコマンドラインで打ち込む順にリストに入れます。例えば、以下のように引数を指定してプログラムを実行する場合、
$ python test.py --batchsize 200 --epoch 100 -g
この実行と同じ引数指定をして、Jupyter上で実行する場合は、該当部分を、
args = parser.parse_args(args=['--batchsize','200','--epoch','100','-g'])
とすれば、実行できます。
以上がJupyter Notebookでargparseを使う方法です。この方法を使えば、Jupyter Notebookでもコマンドライン引数を使ったプログラムを簡単に実行できます。