2016-11-04 21 views
3

Jupyterノートブックで使用されるPythonパッケージのバージョンと関連情報が印刷されているので、その結果が再現可能であることを覚えているようです。しかし、私はパッケージの名前を覚えていない。あなた方の誰かが私を正しい方向に向けることができますか?Jupyterノートブックで使用されるパッケージのバージョンを表示するパッケージ

ありがとうございます!

+1

'PIP freeze'各パッケージに関する情報を示します。あるいは、 'conda list'を使うこともできます。 – estebanpdl

+1

ピップフリーズはノートブックの中のパッケージに関する情報を印刷しますか? – msx

+0

これらの例は、* terminal *または*コマンドプロンプト*の情報を示しています。 – estebanpdl

答えて

5

これは、私がすでに設けられた二つのソリューションを組み合わせることで、この答えを石畳きた現在のノートブック

import types 
def imports(): 
    for name, val in globals().items(): 
     if isinstance(val, types.ModuleType): 
      yield val.__name__ 
list(imports()) 
+1

ご返信ありがとうございますが、問題のノートブックで使用されているパッケージのみを表示するパッケージを探しています。 – msx

+0

この質問の可能な複製 –

+0

http://stackoverflow.com/questions/4858100/how-to-list-imported-modules –

0

からパッケージの一覧を取得するには、インストールされているすべてのパッケージ

import pip #needed to use the pip functions 
for i in pip.get_installed_distributions(local_only=True): 
    print(i) 

を取得します。私は究極的には、Binderという素晴らしいWebサイトで簡単に使用できるよう、requirements.txtタイプのファイルを生成したかったのです。明らかに、私はpip freeze私の全体のシステムにしたくないが、私はまた、すべてのノートブック(最終的に私の問題がどこにあるのか)に別々の仮想環境を作りたくない。

これは、importではなく、import fromを使用したときに複雑な形式のrequirements.txtタイプ文字列を出力し、複雑な部分を処理します。

# Get locally imported modules from current notebook 
import pip 
import types 
def get_imports(): 
    for name, val in globals().items(): 
     if isinstance(val, types.ModuleType): 
      # Split ensures you get root package, 
      # not just imported function 
      name = val.__name__.split(".")[0] 

      # Some packages are weird and have different 
      # imported names vs. system names 
      if name == "PIL": 
       name = "Pillow" 
      yield name 
imports = list(set(get_imports())) 

# The only way I found to get the version of the root package 
# from only the name of the package is to cross-check the names 
# of installed packages vs. imported packages 
requirements = [] 
for m in pip.get_installed_distributions(): 
    if m.project_name in imports and m.project_name!="pip": 
     requirements.append((m.project_name, m.version)) 

for r in requirements: 
    print("{}=={}".format(*r)) 

サンプル出力:

scipy==0.19.0 
requests==2.18.1 
Pillow==5.0.0 
numpy==1.13.0 
matplotlib==2.0.2 
関連する問題