VScode: Автоматическое преобразование файла Python в блокнот Jupyter с помощью задачи - PullRequest
0 голосов
/ 23 июня 2019

В VScode я могу написать файл python с уценкой и ячейками python, а затем преобразовать его в блокнот с помощью палитры команд.Все работает хорошо, но я хотел бы автоматизировать это с помощью задачи.

Я знаю, что мог бы просто определить ярлык для преобразования, но тогда мне все равно нужно было бы вручную сохранить блокнот с помощью файлового менеджера.Могу ли я автоматизировать это с помощью задачи?Если так, как я могу получить доступ к функции для преобразования?Это какая-то внутренняя функция VScode или я могу получить доступ к этой функции через командную строку?

Я пробовал несколько вещей с помощью команды jupyter в командной строке, но безуспешно.Кажется, что нет команды для преобразования файла Python в блокнот Jupyter.Также я не смог найти исчерпывающую документацию для команды jupyter.

Еще один вопрос в отношении ноутбуков Jupyter в VScode: есть ли способ, как я могу скрыть ячейку от появления?Я знаю, что это будет возможно, если я отредактирую метаданные записной книжки, но я надеюсь, что есть лучший способ.

1 Ответ

0 голосов
/ 25 июня 2019

Если кому-то еще интересно это, я сейчас использую jupytext для преобразования файлов Python в ноутбуки Jupyter.

Я написал два очень простых сценария bash для автоматизации преобразования и просмотра записных книжек.

преобразование:

#!/usr/bin/env bash

# retrieve file names and folder from arguments
full_fname=$1
fbase_name_no_ext=$2
dir_name=$3
workspace_folder=$4

full_path_no_ext="$dir_name/$fbase_name_no_ext"

notebook_save_path=$(cd ${dir_name}/.. && pwd)

# activate venv (venv should be in vscode workspace root)
source "${workspace_folder}/my_env/bin/activate"

echo "saving to: $notebook_save_path"

# convert to jupyter notebook
jupytext --to notebook ${full_fname}

# run all cells and save output to notebook file
jupyter nbconvert --to notebook --execute "${full_path_no_ext}.ipynb" --output "${notebook_save_path}/${fbase_name_no_ext}"

# cleanup intermediate notebook (contains only cells no output)
rm "${full_path_no_ext}.ipynb

просмотр записной книжки:

#!/usr/bin/env bash

# retrieve file names and folder from arguments
fbase_name_no_ext=$1
dir_name=$2
workspace_folder=$3

source "${workspace_folder}/my_env/bin/activate"

# notebooks are stored in the parent directory of the source file
notebook_folder=$(cd ${dir_name}/.. && pwd)

# view notebook in a browser window
jupyter notebook "${notebook_folder}/${fbase_name_no_ext}.ipynb"

Вот мой файл задач vscode:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "convert to NB",
            "type": "shell",
            "command": "${workspaceFolder}/convert",
            "args": [
                "${file}",
                "${fileBasenameNoExtension}",
                "${fileDirname}",
                "${workspaceFolder}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            }
        },
        {
            "label": "view NB",
            "type": "shell",
            "command": "${workspaceFolder}/viewNB",
            "args": [
                "${fileBasenameNoExtension}",
                "${fileDirname}",
                "${workspaceFolder}"
            ]

        }
    ]

Поскольку я не эксперт по bash, может быть несколько вещей, которые можно сделать лучше.Критика всегда приветствуется!
Надеюсь, это кому-нибудь пригодится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...