I started to use Jupyter Notebook for my project and I use
nbconvert to run it from the command line.
I want to know that is there any way to have a
.ipynb file and run it with some command-line arguments or reading from
nbconvert documentation but I didn’t find out a way to do it.
If there is no way to do something like those, I want to know what is the best practice to have a single
.ipynb file and run with different configurations?
Thank you in advance.
I guess that if you want a script that uses the command line interface, using a Python script instead of a Jupyter Notebook is much more common. Now I don’t know why you prefer Jupyter Notebook over a plain script, maybe you need to elaborate on that. Maybe Jupyter is just an overkill once you are done with development and it was only good for debugging during development?
If you insist that it must stay a Jupyter Notebook: One idea I had was maybe you can create a regular Python script that serves the CLI (there are great modules like argparse that help you here) and import your Jupyter Notebook as a module as described here?
Thanks for your reply.
Actually most of my project is based on having an explanation over results and peace of code, therefore, I chose Jupyter Notebook to satisfy this requirement.
But also I don’t want to have duplicate code for some common functionalities, so I tried to pass command-line arguments or reading from
stdin to avoid it.
According to your reply, I understand that there is no way to just use Jupyter Notebook and
nbconvert to satisfy my second requirement, right?
And also thanks for your idea about importing Jupyter Notebook in a Python script. Maybe I use plain Python scripts for specific functionalities to avoid duplication.
You can have a look at papermill to parameterise a jupyter notebook (add different configurations/values to a variable), check out https://papermill.readthedocs.io/en/latest/usage-parameterize.html
We at econ-ark, created a script which loads in all the configurations using a YAML file (https://github.com/econ-ark/PortfolioChoiceBlogPost/blob/d68c227a4ec2b5116b7e6500efd5342d9e1a27bd/config.yaml) and loading that in the jupyter notebook, followed by nbconvert.
It is exactly what I was looking for.
Thanks a lot