通常情况下,我使用R,并且通常在想使事物可重复使用时使用sessionInfo()
。原因是我喜欢让人们知道我使用的是什么版本,我已经安装/加载了哪些软件包,以及我在哪些操作系统等等,以便它很清楚。在Python中是否有sessionInfo()等价物?
sessionInfo
返回R的版本,处理器类型(例如32/64位x86),操作系统,语言环境详细信息以及哪些软件包已加载。
我是新来的python,想知道是否有相当于Python?我希望在IPython的笔记本使用它...
通常情况下,我使用R,并且通常在想使事物可重复使用时使用sessionInfo()
。原因是我喜欢让人们知道我使用的是什么版本,我已经安装/加载了哪些软件包,以及我在哪些操作系统等等,以便它很清楚。在Python中是否有sessionInfo()等价物?
sessionInfo
返回R的版本,处理器类型(例如32/64位x86),操作系统,语言环境详细信息以及哪些软件包已加载。
我是新来的python,想知道是否有相当于Python?我希望在IPython的笔记本使用它...
下面将让你们分开有:
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
...
这是我们认为应该在Python使IPython的“魔法”与它帮助之前得到解决的东西。这是经常要求的,我们不是肯定会找到应该做什么和要求的妥协。
做pip冻结在Windows上工作? –
我没有线索,如果它。 – Matt
有一个称为version_information的魔术包完成了这个。用pip install version_information
安装。
%load_ext version_information
%version_information pandas, numpy, seaborn
输出:
你也可以使用该解决方案从How to list imported modules?与!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
魔命令(所有引号需要被移除),所以也许有人可以通过添加该信息来改善这个答案。
可能重复的[如何列出导入的模块?](http://stackoverflow.com/questions/4858100/how-to-list-imported-modules) –
可能,但它不提供版本,操作系统,或python版本 –
@hlm没有内建/标准方式。但是,你可以尝试这个https://gist.github.com/tahajahangir/5275848#file-pyinfo-py – thefourtheye