我在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
包进入用户网站目录首先是一个谜。