It can be handy to create script files from notebooks, using nbdev's notebook2script
. But since Kaggle doesn't actually save the notebook to the file-system, we have to do some workarounds to make this happen. Here's all the steps needed to export a notebook to a script:
!pip install -U nbdev
Collecting nbdev Downloading nbdev-2.0.7-py3-none-any.whl (49 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.2/49.2 KB 379.8 kB/s eta 0:00:00 Requirement already satisfied: astunparse in /opt/conda/lib/python3.7/site-packages (from nbdev) (1.6.3) Collecting fastcore>=1.5.11 Downloading fastcore-1.5.11-py3-none-any.whl (69 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 69.1/69.1 KB 1.5 MB/s eta 0:00:00 Collecting execnb Downloading execnb-0.0.9-py3-none-any.whl (13 kB) Collecting ghapi Downloading ghapi-1.0.0-py3-none-any.whl (55 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.3/55.3 KB 1.8 MB/s eta 0:00:00 Collecting asttokens Downloading asttokens-2.0.5-py2.py3-none-any.whl (20 kB) Requirement already satisfied: packaging in /opt/conda/lib/python3.7/site-packages (from fastcore>=1.5.11->nbdev) (21.3) Requirement already satisfied: pip in /opt/conda/lib/python3.7/site-packages (from fastcore>=1.5.11->nbdev) (22.0.4) Requirement already satisfied: six in /opt/conda/lib/python3.7/site-packages (from asttokens->nbdev) (1.16.0) Requirement already satisfied: wheel<1.0,>=0.23.0 in /opt/conda/lib/python3.7/site-packages (from astunparse->nbdev) (0.37.1) Requirement already satisfied: ipython in /opt/conda/lib/python3.7/site-packages (from execnb->nbdev) (7.32.0) Requirement already satisfied: pexpect>4.3 in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (4.8.0) Requirement already satisfied: matplotlib-inline in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (0.1.3) Requirement already satisfied: jedi>=0.16 in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (0.18.1) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (3.0.27) Requirement already satisfied: setuptools>=18.5 in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (59.8.0) Requirement already satisfied: pygments in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (2.11.2) Requirement already satisfied: traitlets>=4.2 in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (5.1.1) Requirement already satisfied: decorator in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (5.1.1) Requirement already satisfied: backcall in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (0.2.0) Requirement already satisfied: pickleshare in /opt/conda/lib/python3.7/site-packages (from ipython->execnb->nbdev) (0.7.5) Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/conda/lib/python3.7/site-packages (from packaging->fastcore>=1.5.11->nbdev) (3.0.7) Requirement already satisfied: parso<0.9.0,>=0.8.0 in /opt/conda/lib/python3.7/site-packages (from jedi>=0.16->ipython->execnb->nbdev) (0.8.3) Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.7/site-packages (from pexpect>4.3->ipython->execnb->nbdev) (0.7.0) Requirement already satisfied: wcwidth in /opt/conda/lib/python3.7/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->execnb->nbdev) (0.2.5) Installing collected packages: asttokens, fastcore, ghapi, execnb, nbdev Attempting uninstall: fastcore Found existing installation: fastcore 1.4.2 Uninstalling fastcore-1.4.2: Successfully uninstalled fastcore-1.4.2 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. fastai 2.6.0 requires fastcore<1.5,>=1.3.27, but you have fastcore 1.5.11 which is incompatible. Successfully installed asttokens-2.0.5 execnb-0.0.9 fastcore-1.5.11 ghapi-1.0.0 nbdev-2.0.7 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
a=1
%notebook -e testnbdev.ipynb
from nbdev.export import nb_export
nb_export('testnbdev.ipynb', '.')
!cat app.py
# AUTOGENERATED! DO NOT EDIT! File to edit: testnbdev.ipynb. # %% auto 0 __all__ = ['a'] # %% testnbdev.ipynb 2 a=1