Я занимаюсь разработкой приложений, использующих ноутбук Jupyter и ipywidgets для интерфейса от GUI к базе кода бэкенда.У меня возникли проблемы с распространением / установкой пакетов обычным способом, такие как:
- неожиданные различия между необходимыми версиями библиотеки (например, pandas)
- needs.txt, вынуждающие выполнить обновление болеепоследняя версия библиотеки, когда пользователь поддерживает и использует свою собственную кодовую базу в более старой версии этой библиотеки.
Я думаю, что pipenv может решить эту проблему, но я хочу проверить, есть ли у меняправильное использование, прежде чем идти слишком далеко по этому пути.
Требования:
- пользователь должен иметь возможность перезапускать Jupyter Notebook в одной и той же среде несколько раз, запуская программу с нуля,пока не будет доступна новая версия.
- Все пользователи находятся на Mac.
- Любая установка не должна изменять
site-packages
и т. д., не влияют на настройку Python, которую любой пользователь имеет в настоящее время.
Концепция рабочего процесса
Разработка:
- Разработка в среде pipenv (я использую Pycharm, так чтоэто относительно просто).
- Включить
jupyter
в Pipfile [requires]
, хотя jupyter
не импортировано нигде в моем источнике. - Используйте
pipenv install new_package
, как и когда моя кодовая база требует новых пакетов, и поддерживайте Pipfile (с учетом --dev для тестирования пакетов и т. Д.).
Установка пользователя
- Создание zip-файла, содержащего исходный код, setup.py и т. Д., А также Pipfile и Pipfile.lock.
- Пользователь извлекает zip-файл в известное место на своем компьютере.
- В терминале перейдите к разархивированному местоположению папки и выполните
pipenv install
.
Использование:
- В терминале перейдите к местоположению папки и выполните
pipenv shell
- Запустите
pipenv run jupyter notebook
, чтобы перезагрузить env и блокнот. - Когда закончите, закройте блокнот и запустите
exit
, чтобы закрыть env.
Удалитьenv и обновите до новой версии
- В терминале перейдите к папке и запустите
pipenv --rm
. - Загрузите новый zip-файл с исходным кодом и выполните шаги, описанные выше.
Если я понял, это должно гарантировать, что любой может использовать дистрибутив в формате tigСконтролируемая среда, без каких-либо изменений в существующей установке Python?Я слишком усложнил вещи?