如何获得在计算机上安装的Python模块列表?


当前回答

有很多想法,我首先思考的是这两个:

pip

缺点:不总是安装

帮助(“模块”)

缺点:输出到控制台;使用损坏的模块(参见ubuntu…)可以段错误

我需要一个简单的方法,使用基本库,并与旧的python 2.x兼容

我明白了:listmodules.py

在2.5版本的文档源目录中隐藏了一个小脚本,它列出了Python安装的所有可用模块。

优点:

只使用imp、sys、os、re、time 设计用于运行Python 1.5.2及更新版本 源代码非常紧凑,所以你可以很容易地修补它,例如传递一个有bug的模块的异常列表(不要试图导入它们)

其他回答

我只是用它来查看当前使用的模块:

import sys as s
s.modules.keys()

显示在python上运行的所有模块。

对于所有内置模块使用:

s.modules

它是一个包含所有模块和导入对象的字典。

我在OS x上遇到了一个自定义安装的python 2.7。它需要X11来列出已安装的模块(使用help和pydoc)。

为了能够在不安装X11的情况下列出所有模块,我运行pydoc作为http-server,即:

pydoc -p 12345

然后,可以将Safari定向到http://localhost:12345/以查看所有模块。

现在,我自己尝试了这些方法,我得到了广告中所说的:所有的模块。

唉,实际上你不太关心stdlib,你知道安装python会得到什么。

真的,我想要我安装的东西。

令人惊讶的是,实际上效果还不错的是:

pip freeze

返回:

Fabric==0.9.3
apache-libcloud==0.4.0
bzr==2.3b4
distribute==0.6.14
docutils==0.7
greenlet==0.3.1
ipython==0.10.1
iterpipes==0.4
libxml2-python==2.6.21

我说“令人惊讶”是因为包安装工具是人们期望找到这个功能的确切位置,尽管不是在“冻结”的名称下,但python打包是如此奇怪,以至于我惊讶于这个工具是有意义的。Pip 0.8.2, Python 2.7。

help('modules')

在Python shell/提示符中。

PIP冻结可以找到所有的包,但是你可以简单地写下面的命令来列出python包所在的所有路径。

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']