Есть ли эквивалент sessionInfo() в Python?

Обычно я использую R, и часто, когда вы хотите сделать вещи воспроизводимыми, я использую sessionInfo(). Причиной этого является то, что я хотел бы сообщить людям, какая версия всего, что я использую, и какие пакеты я установил/загрузил, и какую ОС я нахожусь и т.д., Так что это совершенно ясно.

sessionInfo возвращает версию R, тип процессора (например, 32/64 бит x86), операционную систему, данные локали и какие пакеты были загружены.

Я новичок в python и задаюсь вопросом, есть ли эквивалент для Python? Я надеюсь использовать его в iPython Notebook...

Ответы

Ответ 1

Ниже вы увидите следующее:

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)]'}

В противном случае нет стандартного способа получения версии импортированных модулей. pip freeze предоставит вам большую часть установленной версии модулей на вашем компьютере:

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
...

Это то, что, по нашему мнению, должно быть разрешено на питоне, прежде чем создавать магию IPython, которые помогают в этом. Это часто запрашивается, и у нас нет да найти компромисс о том, что нужно делать и каковы будут требования.

Ответ 2

Существует волшебный пакет version_information, который выполняет это. Установите с помощью pip install version_information.

%load_ext version_information
%version_information pandas, numpy, seaborn

Вывод:

введите описание изображения здесь

Вы также можете выполнить что-то подобное с помощью решения Список импортированных модулей? вместе с !pip freeze.

#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)

Вывод:

pandas  0.16.2
numpy   1.9.2
seaborn 0.5.1

Я не мог понять, как передать список с импортированными модулями (например, modulenames) в магическую команду %version_information (все кавычки нужно удалить), поэтому, возможно, кто-то может улучшить этот ответ, добавив эта информация.