IT系バンドマンの日常

備忘録やライフログなど

他の実行環境で作成されたJupyter notebookが自分の環境でdead kernelになるときの対処方法

イントロダクション

f:id:kaoru6strings:20170315080721p:plain

人から頂いたipynbファイルが自分の実行環境でdead kernelになってしまいました。つらみ(´・ω・`)

解決方法

jupyter notebookが生成してくれる.ipynbファイルはjson形式のテキストファイルです。( The Jupyter Notebook Format — IPython 3.2.1 documentation )

お好みのテキストエディタでおもむろに.ipynbファイルをひらいていただくとファイルの最後の方にmetadataというところがありますので、そこを自分の環境に書き換えると動きます。自分の環境を知る方法ですが、jupyter notebookで新しい.ipynbファイルを生成すると、そのnotebookの中身のmetadataが自分の環境です。

# Replace前の例
 "metadata": {                                                                                                                              
  "anaconda-cloud": {},                                                                                                                     
  "kernelspec": {                                                                                                                           
   "display_name": "Python [conda root]",                                                                                                   
   "language": "python",                                                                                                                    
   "name": "conda-root-py"                                                                                                                  
  },                                                                                                                                        
  "language_info": {                                                                                                                        
   "codemirror_mode": {                                                                                                                     
    "name": "ipython",                                                                                                                      
    "version": 2                                                                                                                            
   },                                                                                                                                       
   "file_extension": ".py",                                                                                                                 
   "mimetype": "text/x-python",                                                                                                             
   "name": "python",                                                                                                                        
   "nbconvert_exporter": "python",                                                                                                          
   "pygments_lexer": "ipython2",                                                                                                            
   "version": "2.7.11"                                                                                                                      
  }                                                                                                                                         
 },  
# Replace後の例
 "metadata": {                                                                                                                              
  "kernelspec": {                                                                                                                           
   "display_name": "Python 3",                                                                                                              
   "language": "python",                                                                                                                    
   "name": "python3"                                                                                                                        
  },                                                                                                                                        
  "language_info": {                                                                                                                        
   "codemirror_mode": {                                                                                                                     
    "name": "ipython",                                                                                                                      
    "version": 3                                                                                                                            
   },                                                                                                                                       
   "file_extension": ".py",                                                                                                                 
   "mimetype": "text/x-python",                                                                                                             
   "name": "python",                                                                                                                        
   "nbconvert_exporter": "python",                                                                                                          
   "pygments_lexer": "ipython3",                                                                                                            
   "version": "3.6.0"                                                                                                                       
  }                                                                                                                                         
 },  

これで無事dead kernelにならずにipynbファイルを動かすことができました!!(`・ω・´)

ですがソースコードは変換されずそのままですので自分の環境での検証は必須です。お気をつけください。