В настоящее время я использую ноутбуки 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), каждый из которых имеет свою собственную виртуальную среду.Я столкнулся с двумя неудовлетворительными решениями для достижения этой цели:
Установка Jupyter в каждой виртуальной среде.
- Процесс медленной установки
- Требуется настройка расширений каждый раз
- Трата дискового пространства при установке нескольких версий с течением времени
- Заполнение виртуальной среды несоответствующими пакетами
Создание IPyKernel в каждой виртуальной среде.
- Требуется установка IPyKernel в виртуальной среде, которая в любом случае устанавливает большую часть Jupyter
- Опять же, заполнение среды нерелевантными пакетами
- Требуется дополнительная команда для регистрации нового ядра в Jupyter
- Требуется, чтобы пользователь называл каждое ядро вручную
- Требуется, чтобы пользователь выбирал соответствующее Ядро при каждом открытии ноутбука.
Мое третье решение - изменить вышеуказанную конфигурацию для pipenv, поэтомувиртуальная среда находится в рабочем каталоге.Таким образом, мое общее ядро может использовать те же пути для целевой виртуальной среды.Я добавляю соответствующие пути к sys.path в Jupyter.Это ужасная идея?