ipython - tablas - jupyter python 3
Ejecutar un cuaderno IPython/Jupyter de forma no interactiva (4)
¿Alguien sabe si es posible ejecutar un cuaderno IPython / Jupyter de forma no interactiva desde la línea de comandos y tener el archivo .ipynb
resultante guardado con los resultados de la ejecución. Si todavía no es posible, ¿qué tan difícil sería implementar con phantomJS, algo para encender y apagar el kernel, y algo para encender y apagar el servidor web?
Para ser más específicos, supongamos que ya tengo un cuaderno original.ipynb
y quiero volver a ejecutar todas las celdas en ese cuaderno y guardar los resultados en un nuevo cuaderno new.ipynb
, pero hago esto con un solo comando en la línea de comando sin requerir interacción en el navegador o para cerrar el núcleo o el servidor web, y suponiendo que ya no se está ejecutando kernel o servidor web.
comando de ejemplo:
$ ipython notebook run original.ipynb --output=new.ipynb
Hasta que esta funcionalidad se convierta en parte del núcleo, armé una pequeña aplicación de línea de comandos que hace justo lo que desea. Se llama runipy y puedes instalarlo con pip install runipy
. La fuente y el léame están en github .
Para cubrir algunas características como trabajadores paralelos o parámetros de entrada, puede instalar jupyter-runner
pip install jupyter-runner
Léame en github: https://github.com/omar-masmoudi/jupyter-runner
Puede ejecutar el servidor iPython-Notebook a través de la línea de comando:
ipython notebook --pylab inline
Esto iniciará el servidor en modo no interactivo y todos los resultados se imprimirán debajo del código. A continuación, puede guardar el .ipynb-File que incluye Code & Output.
Sí, es posible, y fácil, estará (principalmente) en el núcleo de IPython para 2.0, sugeriría que mire esos ejemplos por el momento.
[editar]
$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb
Ahora está en Jupyter NbConvert. NbConvert viene con un montón de Preprocessor
que están deshabilitados de manera predeterminada, dos de ellos ( ClearOutputPreprocessor
y ExecutePreprocessor
) son de interés. Puede habilitarlos en su (s) archivo (s) de configuración (local | global) a través de c.<PreprocessorName>.enabled=True
(en mayúscula eso es python), o en la línea de comando con --ExecutePreprocessor.enabled=True
mantener el resto de el comando como de costumbre.
El --ExecutePreprocessor.enabled=True
tiene conveniente --execute
alias que se puede utilizar en la versión reciente de NbConvert. Se puede combinar con --inplace
si se desea
Por ejemplo, conviértalo en html después de ejecutar el bloc de notas sin cabeza:
$ jupyter nbconvert --to=html --execute RunMe.ipynb
convirtiendo a PDF después de stripping outputs
$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb
Esto (por supuesto) sí funciona con kernels que no son python al generar un kernel <insert-your-language-here>
, si establece --profile=<your fav profile>
. La conversión puede ser muy larga, ya que necesita volver a ejecutar el portátil. Puede hacer una conversión de portátil a portátil con la opción --to=notebook
.
Hay varias otras opciones (tiempo de espera, permitir errores, ...) que podrían necesitar establecerse / desconfigurarse según el caso de uso. Consulte la documentación y, por supuesto, jupyter nbconvert --help
, --help-all
, o nbconvert documentación en línea para obtener más información.