有几个与此相关的问题和答案,但没有一个针对该特定问题的解决方案。如何在virtualenv中运行jupyter内核?
请注意,我并不是在问如何在virtualenv中运行jupyter 笔记本。 here在其他地方得到了回答。使用this之类的方法,您可以打开一个jupyter笔记本并在所需的virtualenv中选择一个内核。我想在virtualenv中启动jupyter kernel ,然后再将控制台连接到它。
我最好的解决方案是采用上面链接中的方法,然后编辑内核json文件以将argv
更改为virtualenv的python可执行文件,然后启动该jupyter内核。但是,我觉得我必须缺少一些东西,并且必须有一种更简单的方法,尽管this article提出了其他建议。
下面的bash
脚本可以满足我的需求。它制作了一个名为testing
的virtualenv并在其中安装了任意软件包(flask_restful
),以便我以后可以检查是否可以导入它。
然后将virtualenv添加到jupyter内核,并编辑其json文件以使用virtualenv的python可执行文件,然后启动该jupyter内核。
运行脚本之后,我可以使用该内核启动jupyter控制台,并检查它是否确实在virtualenv中运行。
#!/bin/bash
source /usr/bin/virtualenvwrapper.sh
V=testing
P=flask_restful
# If virtualenv exists, remove it
if [ -d ~/.virtualenvs/$V ];
then
rmvirtualenv $V
fi
# Make virtualenv and populate it with ipykernel and package
mkvirtualenv $V
pip install --upgrade pip
pip install ipykernel
pip install $P
deactivate
# Make a jupyter kernel for the virtualenv
python -m ipykernel install --user --name=$V
# Put the virtualenv python executable in the jupyter kernel json file
jshon -I -F ~/.local/share/jupyter/kernels/$V/kernel.json \
-e argv -d 0 -s /home/${USER}/.virtualenvs/$V/bin/python -i 0
# Start the kernel in the background
jupyter kernel --kernel $V &
# Start a jupyter console with the most recently run kernel
F=`ls -t ~/.local/share/jupyter/runtime/kernel-*.json | head -1`
K=`basename $F`
jupyter console --existing $K