Как параметризовать словарь Python на бумажной фабрике? - PullRequest
1 голос
/ 27 мая 2019

Я хочу передать все параметры в одной переменной.Чтобы это произошло, я передаю словарь в своем Python-клиенте для Papermill, используя:

params = {"aviral":"srivastava"}
pm.execute_notebook( 'path/to/input.ipynb', 'path/to/output.ipynb', parameters = params )

Теперь я хочу выполнить соответствующую команду из bash.В документе говорится:

papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1

Но нигде не дано, как передать словарь.

Я перепробовал множество перестановок и комбинаций, таких как:

papermill test_params.ipynb params_output.ipynb -p params {"aviral":"srivastava"}

papermill test_params.ipynb params_output.ipynb -p params '{"aviral":"srivastava"}'

Я также прочитал, чтобы передать dict в формате: '{"aviral":"srivastava"}', и тогда json.loads сделает эту работу.Но у меня нет свободы для преобразования входных данных.Он должен использоваться сразу в скрипте.

Просто минимальный скрипт для проверки типа передаваемой переменной:

params = {} # I tag this with `parameter`
print(type(params))
print(params)

Да, я вижу, что переменная params изменилась, когдаработает на бумажной фабрике, но переданное значение является полной строкой.

1 Ответ

1 голос
/ 28 мая 2019

Поскольку, в вашем случае, вы не можете изменить шаблонную записную книжку напрямую для анализа ввода строки, как насчет того, чтобы вызвать вызываемый вами скрипт на python, который затем выполняет papermill? Это позволяет вам анализировать строку в словаре Python, а затем передавать ее на выполнение бумажной фабрики. Вы также можете пройти через имена ноутбуков таким же образом.

...