tablas - Cómo mostrar números de línea en la celda de código de IPython Notebook de manera predeterminada
manual jupyter notebook (3)
Me gustaría que mi pantalla predeterminada para celdas de código de notebook IPython incluya números de línea.
Aprendí de Mostrar números de línea en portátiles IPython / Jupyter que puedo alternar esto con ctrl-M L, lo cual es genial, pero manual. Para incluir números de línea por defecto, necesitaría agregar algo a mi archivo ipython_notebook_config.py. A menos que me haya perdido algo, no hay una explicación de cómo hacer esto en la documentación.
Lo anterior no funcionó para mí en 2018
Encontré que dentro de ~/.jupyter/nbconfig/notebook.json
necesitaba agregar para agregar las siguientes líneas:
"CodeCell": {
"cm_config": {
"lineNumbers": true
}
Dentro del objeto que estaba allí. Entonces el objeto final se vería así:
{
"CodeCell": {
"cm_config": {
"lineNumbers": true
}
}
}
(Para Jupyter 4+) En las últimas versiones de Jupyter, han documented el lugar para realizar cambios de configuración. Básicamente, en la actualización de Jupyter, eliminaron el concepto de perfiles, por lo que la ubicación del archivo .jupyter/custom/custom.js
ahora es .jupyter/custom/custom.js
, según la .jupyter
carpeta .jupyter
. Entonces, si no tiene una carpeta custom
o el archivo custom.js
, simplemente custom.js
, luego coloque estas líneas en el archivo recién creado:
define([
''base/js/namespace'',
''base/js/events''
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
require("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
}
);
}
);
Lo anterior es para establecer números de línea para todos sus tipos de células al mismo tiempo. Las celdas Code, Markdown y Raw obtendrán números de línea si haces esto. Si desea números de línea solo para celdas de código , hay un enfoque más simple. Seleccione una celda de código, abra la consola de Chrome / Firefox JavaScript, escriba las siguientes líneas:
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{lineNumbers:true}
}
}
config.update(patch)
Luego vuelve a cargar la página. Estos cambios persisten porque Jupyter creará un archivo de configuración json en .jupyter/nbconfig
para almacenarlos. Este método es de esta página de la documentación, así que lea los documentos para ver más cambios de configuración que puede hacer.
(respuesta antigua)
En la última versión de IPython Notebook (v3.1.0), vaya a ~/.ipython/<profile_name>/static/custom/custom.js
y agregue estas líneas:
define([
''base/js/namespace'',
''base/js/events''
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
IPython.Cell.options_default.cm_config.lineNumbers = true;
}
);
}
);
El IPython.Cell.options_default.cm_config.lineNumbers = true;
la línea sola no funcionará ya que necesita cargar el objeto IPython.Cell antes de intentar esto. Agregar esta línea solo causará un error indefinido en la consola. Debe encerrarlo en el controlador de eventos como se muestra.
El código de @William-Denman podría haber funcionado para una versión anterior, pero ahora tendrá que hacer esto.
EDITAR: La línea de código justo en el medio se debe cambiar para que require("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
para la última versión de IPython / Jupyter ( IPython 4.0.0, Jupyter 4.0.6 ). El antiguo objeto IPython.Cell
también funcionará, pero su consola web emitirá una advertencia de desaprobación, por lo que puede esperar que la línea anterior no sea compatible con versiones futuras.
Además, en el último IPython / Jupyter, que estoy ejecutando con el portátil WinPython , no pude encontrar el archivo custom.js
dentro de la carpeta del perfil. Lo encontré (después de mucho buscar) en WinPython-64bit-2.7.10.3/python-2.7.10.amd64/Lib/site-packages/notebook/static/custom
. No sé si esto es una cosa de WinPython o una cosa de Jupyter. Si alguien tiene instalado Jupyter (la última versión) normalmente (usando pip o lo que sea) y aún puede encontrar el archivo custom.js
en la carpeta del perfil, comente.
En su archivo custom.js
(la ubicación depende de su sistema operativo) ponga
IPython.Cell.options_default.cm_config.lineNumbers = true;
Si no puede encontrar custom.js, solo puede buscarlo, pero generalmente estará en su carpeta profile_default. Si no existe, cree el archivo en $(ipython locate profile)/static/custom/custom.js
Si por alguna razón eso no funciona, siempre puede editar el archivo custom.js
en el site-packages/IPython/html/static/custom/
de la misma manera.