列出已安装的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”对象不可调用trypprint.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