2016-06-08 43 views
2

我在Ubuntu上安裝了Jupyter Notebook。 Python 2和Python 3在終端上運行正常,但只有Python 3在IPython上顯示。我正試圖在IPython上使用兩個內核(2和3)。將Python 2內核添加到Ipython

我試過從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,但沒有多大意義。

謝謝!

+0

不完全是答案,但爲什麼不爲Python 2和Python 3使用單獨的虛擬環境?這就是我所做的。 – seanmus

回答

1

我遇到了同樣的問題,發現一個backports軟件包被安裝在Python 2.7系統站點目錄的用戶站點目錄中。此外,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) 

$ python2 -s -m ipykernel install 
Installed kernelspec python2 in /usr/local/share/jupyter/kernels/python2 
:當 -s選項被添加到python命令行

install命令還成功

backports包如何進入用戶網站目錄首先仍然是一個謎。