2013-12-20 12 views
17

Normalerweise verwende ich R, und oft, wenn ich Dinge reproduzierbar machen möchte, verwende ich sessionInfo(). Der Grund dafür ist, dass ich die Leute wissen lasse, welche Version von allem, was ich benutze und welche Pakete ich installiert/geladen habe und welches OS ich bin usw., so dass es ziemlich klar ist.Gibt es eine SessionInfo() Entsprechung in Python?

sessionInfo gibt die Version von R, den Prozessortyp (z. B. 32/64 Bit x86), das Betriebssystem, die Ländereinstellungsdetails und die geladenen Pakete zurück.

Ich bin neu in Python und fragte mich, ob es ein Äquivalent für Python gibt? Ich hoffe, dass es in einem ipython Notebook verwenden ...

+0

möglich duplicate von [Wie importierte Module aufgelistet?] (Http://stackoverflow.com/questions/4858100/how-to-list-imported-modules) –

+2

Möglicherweise, aber es gibt keine Versionen, OS, oder Python-Version –

+1

@hlm Es gibt keine eingebaute/Standard Weg. Aber, können Sie versuchen, diese https://gist.github.com/tahajahangir/5275848#file-pyinfo-py – thefourtheye

Antwort

10

Nachfolgend erhalten Sie dort trennen machen:

In [1]: import IPython 
In [2]: print IPython.sys_info() 
{'codename': 'Work in Progress', 
'commit_hash': '4dd36bf', 
'commit_source': 'repository', 
'default_encoding': 'UTF-8', 
'ipython_path': '/Users/matthiasbussonnier/ipython/IPython', 
'ipython_version': '2.0.0-dev', 
'os_name': 'posix', 
'platform': 'Darwin-11.4.2-x86_64-i386-64bit', 
'sys_executable': '/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python', 
'sys_platform': 'darwin', 
'sys_version': '2.7.6 (default, Nov 28 2013, 17:25:22) \n[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]'} 

Ansonsten gibt keine Standardmethode ist die Version von importierten Module zu erhalten. pip freeze werden Sie, obwohl die meisten der installierten Version von Modulen auf Ihrem Rechner Wive:

In [3]: !pip freeze 
Cython==0.20dev 
Django==1.4.2 
Fabric==1.7.0 
Flask==0.9 
Flask-Cache==0.10.1 
Flask-Markdown==0.3 
Flask-SQLAlchemy==0.16 
Jinja2==2.7.1 
Logbook==0.6.0 
... 

Das ist etwas, das wir denken sollten, bevor sie IPython ‚magics‘ in Python gelöst werden, die mit ihm zu helfen. Dies wird oft verlangt, und wir haben ja keinen Kompromiss gefunden, was getan werden sollte und was die Anforderungen wären.

+0

funktioniert Pip-Freeze auf Windows? –

+0

Ich habe keine Hinweise, wenn es so ist. – Matt

4

Es gibt ein magisches Paket namens version_information, das dies erreicht. Installieren Sie mit pip install version_information.

%load_ext version_information 
%version_information pandas, numpy, seaborn 

Ausgang:

enter image description here

Sie könnten auch etwas ähnliches mit der Lösung von How to list imported modules? zusammen mit !pip freeze erreichen.

#find the names of the imported modules 
import types 
def imports(): 
    for name, val in globals().items(): 
     if isinstance(val, types.ModuleType): 
      yield val.__name__ 

#exclude all modules not listed by `!pip freeze` 
excludes = ['__builtin__', 'types', 'IPython.core.shadowns', 'sys', 'os'] 
imported_modules = [module for module in imports() if module not in excludes] 
pip_modules = !pip freeze #you could also use `!conda list` with anaconda 

#print the names and versions of the imported modules 
for module in pip_modules: 
    name, version = module.split('==') 
    if name in imported_modules: 
     print(name + '\t' + version) 

Ausgang:

pandas 0.16.2 
numpy 1.9.2 
seaborn 0.5.1 

ich nicht verstehen konnte, wie eine Liste mit der importierten Module angeben (zB modulenames) an den %version_information magischen Befehl (alle Anführungszeichen müssen entfernt werden), Vielleicht kann jemand diese Antwort verbessern, indem er diese Information hinzufügt.

Verwandte Themen