Лучший способ создать/распространить отдельное приложение на основе Jupyter Notebook/JupterLab?

Я создал довольно сложный графический пользовательский интерфейс для конвейера анализа данных, который используется в нейробиологической лаборатории. Я построил его с помощью Python в блокноте Jupyter, используя ipywidgets и различные библиотеки интерактивных графиков, такие как боке. По сути, это просто графический интерфейс для существующего пакета анализа Python, но многие исследователи не обладают достаточными навыками программирования для его использования и, следовательно, нуждаются в графическом интерфейсе.

Проблема в том, что это довольно сложный процесс установки. Вам нужно установить anaconda, установить кучу библиотек, запустить сервер ноутбуков Jupyter и т. д. Этот процесс установки невозможен для людей с минимальными техническими навыками.

Как я могу упаковать и доставить свое приложение Jupyter Notebook как можно ближе к типу установки «загрузить и дважды щелкнуть установщик»? Это должно быть легко для нетехнических людей. Предлагает ли здесь что-нибудь новая JupyterLab? Могу ли я каким-то образом упаковать его как приложение Electron?


person Brandon Brown    schedule 18.03.2018    source источник
comment
nteract (nteract.io) не подходит для этих целей? Interact вкладывает значительные средства в интеграцию вокруг Jupyter. Если бы вы могли поместить текущий код / ​​pkg в этот дистрибутив, возможно, стоит попытаться создать что-то с нуля.   -  person OJ Kwon    schedule 19.03.2018
comment
Один из вариантов — создать tar-файл с conda package, содержащим всю вашу среду; затем этот tar-файл можно установить с помощью conda install --offline <tarfile>. Обратите внимание, что любые локально скомпилированные библиотеки (например, с помощью Cython) нельзя будет перемещать, поэтому это работает, только если вы используете чистый python + предварительно упакованные библиотеки. см. это обсуждение.   -  person Isaiah Norton    schedule 05.12.2018


Ответы (2)


Вы пробовали конструктор conda?

  • Он создает установщик двойным щелчком + выполнение шагов, который устанавливает python, conda и указанные пакеты conda.
  • Установка Jupyter таким образом также создает запись меню «Пуск» в Windows для запуска сервера Jupyter.
  • Он также позволяет указать пакетные сценарии до и после установки, которые можно использовать для дополнительной настройки.
  • Он также может создавать установщики Linux и OSX.

Для распространения и обновления приложений (файлы .ipynb) я однажды использовал сценарии запуска сервера Jupyter, чтобы проверить наличие более новых версий в репозитории github и получить новые версии файлов, если они были.

Кроме того, для более удобного взаимодействия с пользователем внутри Jupyter проверьте режим приложения.

person Sergio Chumacero    schedule 10.04.2019
comment
Можно ли добавить пункт меню «Пуск», который запускает Jupyter в определенный блокнот? - person Brandon Brown; 10.04.2019
comment
Да, conda использует инструмент для установки элемента меню «Пуск»: menuinst. Он использует json, который указывает команду, которая запускается по щелчку. Вы можете изменить эту команду (и заставить ее открывать Jupyter в каталоге или файле) и переустановить пункт меню, используя API-интерфейс python для menuinst. Все это можно сделать вручную или добавить в постустановочный скрипт конструктора. Вы даже можете добавить свой собственный значок меню. - person Sergio Chumacero; 10.04.2019
comment
Кажется, это лучший вариант на данный момент. В идеале лучше всего было бы что-то вроде автономного приложения для взаимодействия на ноутбуке Jupyter, но на данный момент это не представляется возможным. - person Brandon Brown; 11.04.2019

Возможно, вы сможете использовать для этого pyinstaller. Если вы можете запустить свою программу, вызвав простой скрипт Python.

pip install pyinstaller

pyinstaller --onefile your_script.py

Если вы выполняете это в среде Windows, создается исполняемый файл Windows, который содержит все зависимости. Я не уверен, что происходит в системе Linux. Однако исполняемый файл может стать очень большим.

Вы можете столкнуться с проблемами, если сценарию потребуются какие-либо временные файлы и т. д. Я пытаюсь понять эту часть самостоятельно.

person Sören    schedule 06.02.2020