列出已安装的python站点包?

列出已安装的python站点包?,python,django,Python,Django,返回:/usr/lib/python2.6/站点包 from distutils.sysconfig import get_python_lib; print get_python_lib() 返回:[“”,/usr/lib/python2.6/site packages/Django-1.1-py2.6.egg',“/usr/lib/python2.6/site packages/pip-0.6.3-py2.6.egg',”/usr/lib/python2.6/site packages/T

返回:
/usr/lib/python2.6/站点包

from distutils.sysconfig import get_python_lib; print get_python_lib()
返回:
[“”,/usr/lib/python2.6/site packages/Django-1.1-py2.6.egg',“/usr/lib/python2.6/site packages/pip-0.6.3-py2.6.egg',”/usr/lib/python2.6/site packages/TRML2PDF-1.0-py2.6.egg',“/usr/lib/python2.6/site packages/Django\u multi-host-1.3-python2.6.6.6.egg',”

但是如何从安装的站点软件包中列出“可导入名称”?例如:(导入结果之前)
django、pip、trm2pdf……

谢谢。

退房

Yolk是一个Python命令行工具和库,用于获取由setuptools、easy_install和distutils(Python 2.5)安装的软件包的信息,以及查询PyPI(Python软件包索引a.k.a.Cheese Shop)

您可以使用。它列出了/usr/lib/python2.6/site-packages中的所有模块:(与
sys.modules
不同,它列出的模块无需您首先导入)

编辑: 不要在
pkgutil中列出
walk_包
。但是,
pkgutil
包括
walk_包
。这意味着它是pkgutil公共界面的一部分。您可以在/usr/lib/python2.6/pkgutil.py中的
walk_包
上找到以下文档,或者键入
help(pkgutil.walk_包)


您需要
sys.modules

Definition: pkgutil.walk_packages(path=None, prefix='', onerror=None)
Docstring:
    Yields (module_loader, name, ispkg) for all modules recursively
    on path, or, if path is None, all accessible modules.

    'path' should be either None or a list of paths to look for
    modules in.

    'prefix' is a string to output on the front of every module name
    on output.

    Note that this function must import all *packages* (NOT all
    modules!) on the given path, in order to access the __path__
    attribute to find submodules.

    'onerror' is a function which gets called with one argument (the
    name of the package which was being imported) if any exception
    occurs while trying to import a package.  If no onerror function is
    supplied, ImportErrors are caught and ignored, while all other
    exceptions are propagated, terminating the search.

    Examples:

    # list all modules python can access
    walk_packages()

    # list all submodules of ctypes
    walk_packages(ctypes.__path__, ctypes.__name__+'.')
您可以从那里进行切分。

是用于该作业的工具,因为它是用于安装和管理Python软件包的工具。安装后,您必须执行:

import pprint, sys
pprint.pprint(sys.modules)
这将以pips需求格式输出软件包和版本信息(稍后可使用一个命令安装这些软件包)。输出格式如下:

pip freeze

我不知道有什么简单的方法。Python发行版(即安装的东西,如Django 1.3)可以有零个或多个Python模块,零个或多个Python包(即有子模块的模块,而不是其他工具称之为包的模块),零个或多个脚本,零个或多个数据文件。如果使用pip或easy_install安装,元数据文件将写入egg info目录/文件/压缩目录,因此工具可以遍历这些文件以显示为发行版安装了哪些模块或包,但我不知道有任何工具可以做到这一点

yolk和pip freeze只列出发行版(即使它们称之为软件包),让您知道安装了什么版本,然后您可以升级或卸载它们

检查sys.modules仅提供有关当前Python会话期间导入的模块的信息

因此,要知道在安装发行版后哪些模块可以导入到您的系统中,您必须对站点包和类似目录进行粗略检查,或者编写一些代码来遍历打包元数据文件并提取模块。这对安装了纯distutils的发行版不起作用

这显然是不完善和混乱的;我们仍在进行Python打包


顺便说一句,我能问一下你的问题的用例是什么吗?通常你安装一个发行版来处理它,告诉你安装什么的文档也会告诉你导入什么。

Nice!,如果我运行yolk-l…它会列出我:Django…等等。但是正确的“导入名称”是Django(小写)。如何?>>>导入pprint,sys>>>pprint(sys.modules)回溯(上次调用):文件“”,第1行,在TypeError中:“module”对象不可调用try
pprint.pprint(sys.modules)
输出为:
{'UserDict':,…
似乎不是已安装的插件。我无法代表2.6说话,因为我在所有机器上运行2.5.4。忽略我的投票结果:有一个很大的差异(读得太快)你试过了吗?需要
从distutils.sysconfig导入get_python_lib;打印(get_python_lib())
现在不支持Python 2。从pip 1.3开始,有一个命令。需要从distutils.sysconfig导入get_Python_lib;从上面打印get_Python_lib()
而不是硬编码路径。2.6太旧了。。。。
import pprint, sys
pprint.pprint(sys.modules)
pip freeze
querystring-parser==1.0
raven==1.4.6
requests==0.14.2
scipy==0.10.1