2016-03-10 4 views
0

Я пытаюсь периодически запускать jupyter-ноутбук, используя runipy и osx's launchd.Запуск runipy от launchd

Это работает из командной строки

/path/to/interpreter/python.3.4 /path/to/runipy/main.py /path/to/notebook/nb.ipynb 

, но аналогичный подход в запуск программ PLIST не запустилась ноутбуку

<key>ProgramArguments</key> 
<array> 
    <string/path/to/interpreter/python.3.4</string> 
    <string/path/to/runipy/main.py</string> 
    <string/path/to/notebook/nb.ipynb</string> 
</array> 

Когда я проверяю журнал консольный я просто увидеть эту загадочную ошибку

Service exited with abnormal code: 1 

Любые идеи о том, почему это не удается?

Примечание: В настоящее время я использую launchd для запуска файлов py на этой машине с использованием аналогичного подхода.

UPDATE:

Я добавил следующие строки в моей PLIST за предложение WIJ в

<key>StandardErrorPath</key> 
<string>/tmp/com.your.thing.err</string> 
<key>StandardOutPath</key> 
<string>/tmp/com.your.thing.out</string> 

и получил

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 3940: ordinal not in range(128) 

ответ

1

меня вокруг " ASCII»ошибка при создании посреднической ру файла, который использует runipy и открывает ноутбук с кодировкой = "UTF-8"

nb_launcher.py

from runipy.notebook_runner import NotebookRunner 
from IPython.nbformat.current import read 

notebook = read(open("nb.ipynb", encoding="utf-8"), 4) 
r = NotebookRunner(notebook) 
r.run_notebook() 

и называя, что из

запуска программ
<key>ProgramArguments</key> 
<array> 
    <string/path/to/interpreter/python.3.4</string> 
    <string/path/to/py_file/nb_launcher.py</string> 
</array> 
1

Вы используете LaunchControl? Я бы рекомендовал использовать его, так что вы можете легко захватить Стандартную ошибку в консоли и посмотреть, что лежащие в основе ненормального кода 1. Без LaunchControl, вы также можете добавить эти ключи к .plist:

<key>StandardErrorPath</key> 
<string>/tmp/com.your.thing.err</string> 
<key>StandardOutPath</key> 
<string>/tmp/com.your.thing.out</string> 
+0

Спасибо, я проверю это –