Как мы можем оценить записную книжку Mathematica из командной строки (т.е. при запуске ядра в режиме командной строки)?
Предположим, мы работаем на удаленной машине. Я знаю, что можно преобразовать записную книжку в m-файл, и оценить это, но мне любопытно, можно ли сделать это напрямую с помощью записной книжки.
Вот что у меня есть на данный момент:
Во-первых, нам нужно запустить автономный X-сервер на удаленной машине Linux, чтобы клиентский интерфейс мог работать там (и открывать ноутбук). Пропустите этот шаг, если вы работаете на локальном компьютере.
Xvfb :1 &
export DISPLAY=:1
После этого я запустил ядро Mathematica ( math
) и сделал следующее.
Необходимо использовать UsingFrontEnd
, потому что для открытия записной книжки требуется внешний интерфейс. test.nb имеет единственную входную ячейку, содержащую a = 1
.
In[1]:= nb=UsingFrontEnd@NotebookOpen["test.nb"]
Out[1]= -NotebookObject-
После попытки оценить записную книжку, по-видимому, я получаю диалоговое окно , и мне нужно использовать Return []
, чтобы вернуться. Я не уверен, почему строка ввода снова начинает отсчет с 1 (новое ядро было запущено внешним интерфейсом?) Обратите внимание, что a
не получил значения.
In[2]:= UsingFrontEnd@NotebookEvaluate[nb]
In[1]:= a
Out[1]= a
In[2]:= Return[]
Out[2]= a
После возврата из диалогового окна a
по-прежнему не имеет значения.
In[3]:= a
Out[3]= a