Linux云平台virtualenv运行Jupyter Notebook遇ipykernel安装权限问题
解决virtualenv中无法安装ipykernel的问题
看起来你遇到的问题很常见——当使用--system-site-packages创建虚拟环境时,全局Python的依赖很可能和虚拟环境的pip产生冲突,导致ipykernel安装失败。下面是几个针对性的解决办法,你可以一步步尝试:
方法1:先升级虚拟环境内的pip再重装ipykernel
首先得确保虚拟环境里的pip是最新版本,很多安装失败的问题都是因为pip版本太旧导致的兼容性问题:
- 激活你的虚拟环境:
source /path/to/your/virtualenv/bin/activate - 升级pip到最新版:
python3 -m pip install --upgrade pip - 强制重新安装ipykernel,同时跳过缓存避免旧包干扰:
这里的python3 -m pip install ipykernel --force-reinstall --no-cache-dir--force-reinstall会覆盖可能存在的冲突文件,--no-cache-dir能避免使用之前缓存的有问题的安装包。
方法2:手动将虚拟环境kernel注册到Jupyter
如果安装成功后,Jupyter里还是看不到这个虚拟环境的kernel,需要手动完成注册:
python3 -m ipykernel install --user --name=your-virtualenv-name --display-name="Python 3.6 (your-virtualenv-name)"
把your-virtualenv-name替换成你实际的虚拟环境名称,这样Jupyter就能识别到这个专属kernel了。
方法3:排查并解决全局依赖冲突
要是上面的方法都不管用,大概率是全局的某些旧版本库和ipykernel不兼容。你可以先查看虚拟环境内的依赖列表:
pip list
重点看看有没有jupyter_core、tornado这类和Jupyter相关的旧版本库,如果有,先升级它们:
pip install --upgrade jupyter_core tornado
升级完成后再重新安装ipykernel试试。
方法4:备选方案——创建纯净虚拟环境
如果--system-site-packages不是必须的,你可以考虑重新建一个不带该参数的虚拟环境,虽然体积会大一些,但能彻底避开全局依赖的干扰:
deactivate rm -rf /path/to/your/virtualenv virtualenv -p python3.6 /path/to/new-virtualenv source /path/to/new-virtualenv/bin/activate pip install sympy ipykernel
另外还要注意云平台的权限问题,如果安装时提示权限不足,记得加上--user参数,把包安装到当前用户目录下:
pip install ipykernel --user
内容的提问来源于stack exchange,提问作者Matthew




