Избегайте создания нескольких ядер Jupyter для каждого virtualenv

#python #jupyter-notebook #virtualenv

#python #jupyter-ноутбук #virtualenv

Вопрос:

Я работаю с ноутбуками Jupyter и несколькими виртуальными компьютерами в Ubuntu 18.04 (я не использую Conda).

Обычно я создаю новый virtualenv для каждого нового проекта python, над которым я работаю, и, поскольку я работаю над многими проектами, я хотел бы избежать создания нескольких ядер Jupyter, как предлагается здесь.

Вместо этого я хотел бы сказать Jupyter запускать ядра python в virtualenv, в котором я запускаю его ПО УМОЛЧАНИЮ.

Я знаю, что это возможно, поскольку раньше это работало именно так, но тогда я не знаю, что я сделал не так, и теперь, если я не создам ядро для каждого virtualenv, Jupyter не позволит мне использовать модули python, которые я установил в этой среде.

Раньше это работало следующим образом:

  • Я активирую virtualenv

    source bin/активировать

  • Я установил Jupyter в этом virtualenv
  • Я запустил Jupyter в этом virtualenv

    записная книжка jupyter

  • Я выбрал Python3 / 2, ядро R в зависимости от того, что мне было нужно
  • Я мог бы импортировать все модули, установленные в этом virtualenv

Теперь он больше не работает, и если я попытаюсь импортировать модуль, установленный в этом virtualenv, он выдает следующую ошибку:

Ошибка ModuleNotFoundError: нет модуля с именем ‘modulename’

Даже если я проверил, что записная книжка Jupyter ищет правильные пути:

 ! which python
/home/user/venv_name/bin/python
  

и

 ! which pip
/home/user/venv_name/bin/pip
  

Как я могу вернуть старую настройку?

Комментарии:

1. Можете ли вы попробовать import sys; sys.path как в интерпретаторе python, так и в ячейке jupyter и посмотреть, есть ли разница? Если это так, обходным путем является добавление путей в начале записной книжки. Тем не менее, я ищу лучшее решение самостоятельно.