Нужно ли мне устанавливать блокнот Jupyter в каждую виртуальную среду?

Я изолирую свои проекты по науке о данных в виртуальных средах с помощью pipenv. Однако при запуске блокнота Jupyter не происходит доступа к локальной среде и используется IPyKernel по умолчанию. Я видел, что вы можете регистрировать виртуальные среды изнутри среды, но для этого требуется установка пакета ipykernel, который сам требует Jupyter!

Есть ли способ избежать этого и просто использовать одну установку Jupyter для всех виртуальных сред?


person user126350    schedule 29.09.2018    source источник
comment
Нет .. Вам нужно установить отдельный блокнот jupyter для каждого virtualenv. После активации virtualenv записная книжка jupyter, установленная для этого конкретного virtualenv, будет доступна в path.   -  person SaiNageswar S    schedule 29.09.2018
comment
Есть идеи, почему это так? Похоже на пустую трату дискового пространства и требует настройки надстроек и т. Д. Для каждого нового проекта ...   -  person user126350    schedule 29.09.2018
comment
pip install помещает все файлы в site_packages virtualenv. Все зависимости, доступные в конкретном virtualenv, будут доступны только в этом конкретном экземпляре записной книжки jupyter.   -  person SaiNageswar S    schedule 29.09.2018
comment
Это натолкнуло меня на мысль просто добавить site_packages виртуальной среды в путь Python. Будет ли это прискорбно?   -  person user126350    schedule 29.01.2019


Ответы (3)


Как правило, вы устанавливаете jupyter один раз и выполняете в своих виртуальных средах следующие действия:

pip install ipykernel  
python -m ipykernel install --user

Этого недостаточно, если вы используете несколько версий Python.
Здесь есть руководство, которое пытается решить эту проблему:
https://medium.com/@henriquebastos/the-definitive-guide-to-setup-my-python-workspace-628d68552e14 < / а>

Это не на 100% отказоустойчивое приложение, но оно может помочь вам избежать постоянной переустановки ноутбука jupyter.

person Hendrik D    schedule 20.11.2018
comment
ipykernel зависит от jupyter-core, поэтому для этого достаточно просто установить Jupyter снова. - person user126350; 29.01.2019

Я нашел обходной путь, о котором буду благодарен за отзывы. Я изменил pipenv для установки виртуальных сред в рабочий каталог, добавив в _1 _ / _ 2_:

export PIPENV_VENV_IN_PROJECT=1

Теперь, открывая записную книжку Jupyter, я просто привязываю пакеты виртуальной среды к пути Python:

import sys
sys.path.append('./.venv/lib/python3.7/site-packages/')

Это ужасная идея?

person user126350    schedule 29.01.2019
comment
Это вопрос, а не ответ. - person jorijnsmit; 28.05.2020

Я обнаружил, что при переустановке jupyter отдельно для каждой среды возникает несколько проблем: т.е. pip install jupyter jupyterlab в новых средах.

У меня было несколько проблем (с Conda и без), когда Jupyter устанавливал пакеты в другую среду Python, когда вы использовали !pip install a_package_name в ячейке. Среда оболочки по-прежнему отслеживала питон, не относящийся к среде, и вы можете сказать это, сравнив выходные данные !which python и

import sys
sys.executable

Поэтому, когда вы пытаетесь импортировать пакет, он не будет доступен, потому что ячейки использовали среду python / kernel (поскольку он обнаружил каталог venv).

person Ben Butterworth    schedule 06.11.2020