Как отображать номера строк в ячейке кода ноутбука IPython по умолчанию
Я бы хотел, чтобы мой дисплей по умолчанию для ячеек кода для ноутбуков IPython включал номера строк.
Я узнал из Отображение номеров строк в IPython/Jupyter Notebooks, которые я могу переключить с помощью ctrl-M L, что здорово, но вручную. Чтобы включить номера строк по умолчанию, мне нужно будет добавить что-то в файл ipython_notebook_config.py. Если я что-то пропустил, в документации нет объяснений, как это сделать.
Ответы
Ответ 1
В вашем файле custom.js
(местоположение зависит от вашей ОС) поставьте
IPython.Cell.options_default.cm_config.lineNumbers = true;
Если вы не можете найти custom.js, вы можете просто найти его, но обычно он будет в вашей папке profile_default. Если он не существует, создайте файл в $(ipython locate profile)/static/custom/custom.js
Если по какой-либо причине это не работает, вы всегда можете редактировать файл custom.js
в site-packages/IPython/html/static/custom/
тем же способом.
Ответ 2
(для Jupyter 4 +) В последних версиях Jupyter они задокументировали место для внесения изменений в конфигурацию, В основном, в обновлении Jupyter они удалили концепцию профилей, поэтому расположение файла custom.js
теперь .jupyter/custom/custom.js
, в зависимости от того, где находится ваша папка .jupyter
. Поэтому, если у вас нет папки custom
или custom.js
, просто создайте их, а затем поместите эти строки во вновь созданный файл:
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;
}
);
}
);
Вышеуказанное относится к тому, чтобы одновременно устанавливать номера строк в все типы ваших клеток. Code, Markdown и Raw будут получать номера строк, если вы это сделаете. Если вам нужны строки только для кодовых ячеек, существует более простой подход. Выберите ячейку кода, откройте консоль Chrome/Firefox JavaScript, введите следующие строки:
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{lineNumbers:true}
}
}
config.update(patch)
Затем перезагрузите страницу. Эти изменения сохраняются, потому что Jupyter создаст файл конфигурации json в .jupyter/nbconfig
, чтобы сохранить их. Этот метод находится в этой странице документации, поэтому прочитайте документы для большего количества изменений конфигурации, которые вы можете сделать.
(старый ответ)
В последней версии IPython Notebook (v3.1.0) перейдите к ~/.ipython/<profile_name>/static/custom/custom.js
и добавьте следующие строки:
define([
'base/js/namespace',
'base/js/events'
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
IPython.Cell.options_default.cm_config.lineNumbers = true;
}
);
}
);
Строка IPython.Cell.options_default.cm_config.lineNumbers = true;
сама по себе не будет работать, так как она должна загружать объект IPython.Cell, прежде чем он попытается это сделать. Добавление этой строки приведет к ошибке undefined в консоли. Вам нужно заключить его в обработчик событий, как показано.
@Код William-Denman, возможно, работал для более ранней версии, но теперь вам нужно будет это сделать.
EDIT: Строка кода прямо посередине должна быть изменена на require("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
для последней версии IPython/Jupyter (IPython 4.0.0, Jupyter 4.0 +0,6). Старый объект IPython.Cell
также будет работать, но ваша веб-консоль выдаст предупреждение об устаревании, поэтому вы можете ожидать, что старая строка не будет поддерживаться в будущих версиях.
Кроме того, в последнем IPython/Jupyter, который я запускаю с помощью переносной WinPython, я не смог найти custom.js
файл в папке профиля. Я нашел его (после большого поиска) в WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Lib\site-packages\notebook\static\custom
. Я не знаю, это ли это вещь WinPython или вещь Jupyter. Если у кого-то есть Jupyter (последняя версия), установленная нормально (используя пипс или что-то еще) и все еще можно найти файл custom.js
в папке профиля, прокомментируйте.