Является ли загрузка виртуальных сред в Jupyter через добавление к пути Python плохой идеей? - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я использую ноутбуки Jupyter с виртуальными средами Python и pipenv.Я использую следующий код в качестве решения для загрузки виртуальной среды внутри моего ноутбука Jupyter:

import sys
sys.path = ['./.venv/lib/python37.zip',
            './.venv/lib/python3.7',
            './.venv/lib/python3.7/lib-dynload',
            './.venv/lib/python3.7/site-packages',
] + sys.path

Это плохая практика?Если да, то каковы проблемы, риск, побочные эффекты и т. Д.?

(Обратите внимание, это работает, потому что я настроил pipenv для хранения среды в моем рабочем каталоге через echo "export PIPENV_VENV_IN_PROJECT=1" >> ~/.bash_profile)

Как я сюда попал?

Моя цель - использовать ноутбуки Jupyter для многочисленных проектов Python (и R), каждый из которых имеет свою собственную виртуальную среду.Я столкнулся с двумя неудовлетворительными решениями для достижения этой цели:

  1. Установка Jupyter в каждой виртуальной среде.

    • Процесс медленной установки
    • Требуется настройка расширений каждый раз
    • Трата дискового пространства при установке нескольких версий с течением времени
    • Заполнение виртуальной среды несоответствующими пакетами
  2. Создание IPyKernel в каждой виртуальной среде.

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

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

1 Ответ

0 голосов
/ 29 января 2019

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

...