将Python 2内核添加到Ipython

我在Ubuntu上安装了Jupyter Notebook。 Python 2和Python 3在terminal上运行正常,但只有Python 3出现在IPython上。 我正试图在IPython上获得两个内核(2和3)。

我试图从https://github.com/ipython/ipykernel手动安装ipykernel,这是成功的,但仍然无法获得Python 2内核显示。 我也试过:

> sudo ipython2 kernelspec install-self 

并得到了错误: ImportError: No module named shutil_get_terminal_size

接下来,我试着:

 python2 -m pip install --upgrade ipykernel python2 -m ipykernel install 

第二行返回一个错误:

 /usr/bin/python2: No module named shutil_get_terminal_size; 'ipykernel' is a package and cannot be directly executed 

我想这个挑战是与名为shutil_get_terminal_size的模块。 请,请告诉我如何解决这个问题。 我阅读这篇文章: https : //github.com/ipython/ipython/issues/9416,但不能有太多的意义。

谢谢!

我遇到了同样的问题,发现在Python 2.7系统站点目录用户站点目录中都安装了backports软件包。 而且, backports.shutil_get_terminal_size包仅在系统站点目录中:

 $ ls -l $(find / -name 'backports' 2>/dev/null) /root/.local/lib/python2.7/site-packages/backports: total 0 drwxr-xr-x 1 root root 88 Aug 4 16:04 configparser /usr/lib/python2.7/site-packages/backports: total 8 -rw-r--r-- 1 root root 75 Aug 4 17:58 __init__.py -rw-r--r-- 1 root root 267 Aug 4 17:58 __init__.pyc drwxr-xr-x 1 root root 128 Aug 4 17:58 shutil_get_terminal_size 

当Python执行import语句时,它首先在用户站点目录中查找,然后在系统站点目录中查找。 由于shutil_get_terminal_size软件包不在用户站点目录中的backports软件包中,导入将始终失败。 这是最小的形式导入错误的样子:

 $ echo "from backports.shutil_get_terminal_size import get_terminal_size; \ print(get_terminal_size())" | python2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named shutil_get_terminal_size 

在python命令行上添加-s选项会告诉Python 不要使用用户站点目录,并且导入命令成功:

 $ echo "from backports.shutil_get_terminal_size import get_terminal_size; \ print(get_terminal_size())" | python2 -s terminal_size(columns=319, lines=104) 

-s选项添加到python命令行时, install命令也会成功:

 $ python2 -s -m ipykernel install Installed kernelspec python2 in /usr/local/share/jupyter/kernels/python2 

如何backports包进入用户网站目录首先是一个谜。