Почему я могу импортировать пакеты в свои записные книжки Jupyter только при использовании `pipenv run papermill`?

В проекте, где мне нужно запустить несколько ноутбуков Jupyter, я создал виртуальную среду с помощью pipenv и установил несколько пакетов (обратите внимание, что я использовал флаг --site-packages).

Хотя теперь я могу запускать блокноты с помощью pipenv run papermill ..., я не могу запускать их из Jupyter с помощью pipenv run или pipenv shell из-за некоторых исключений ModuleNotFoundError.

В частности, модули, отмеченные во втором случае, устанавливаются только в виртуальной среде и не унаследованы от глобальных сайтов.

Действительно, если я проверю sys.path, я увижу разницу в двух случаях: во втором нет записи ~/.local/share/virtualenvs/....

Почему у меня возникла эта проблема и как ее решить? (Если возможно, я бы предпочел не засорять свой ~/.local/share/jupyter/kernels другими ядрами от virtualenvs).


person Stefano Campanella    schedule 10.08.2020    source источник
comment
Вероятно, ответил в этом обсуждении   -  person Andrei R.    schedule 10.08.2020
comment
@АндрейР. Я могу подтвердить, что jupyter установлен в virtualenv, и вывод which jupyter действительно является правильным путем. Так что, к сожалению, ответы в обсуждении не решают проблему.   -  person Stefano Campanella    schedule 11.08.2020


Ответы (1)


Как было предложено здесь, вы также нужно убедиться, что ядро ​​тоже под venv:

python -c "import IPython"
python -m ipykernel install --user --name=my-virtualenv-name

а затем переключите ядро ​​с именем my-virtualenv-name в пользовательском интерфейсе jupyter.

person Andrei R.    schedule 11.08.2020
comment
Спасибо за ответ. Однако, как я уже писал в своем вопросе, я бы предпочел не заполнять ~/.local/share/jupyter/kernels ядрами из виртуальных сред. Вы предполагаете, что это единственный способ решить проблему? - person Stefano Campanella; 12.08.2020