有没有办法找到使用easy_install或pip安装的所有Python PyPI包?我的意思是,不包括发行版工具(在Debian上的apt-get)安装的所有东西。


当前回答

如果有人想知道,你可以使用'pip show'命令。

pip show [options] <package>

这将列出给定包的安装目录。

其他回答

正如@almenon指出的那样,这种方法不再有效,也不支持在代码中获取包信息的方式。下面会引发一个异常:

import pip
installed_packages = dict([(package.project_name, package.version) 
                           for package in pip.get_installed_distributions()])

为此,可以导入pkg_resources。这里有一个例子:

import pkg_resources
installed_packages = dict([(package.project_name, package.version)
                           for package in pkg_resources.working_set])

我的版本是v3.6.5

至少对于Ubuntu(也许其他的)来说是这样工作的(灵感来自于这个线程之前的一篇文章):

printf "Installed with pip:";
pip list 2>/dev/null | gawk '{print $1;}' | while read; do pip show "${REPLY}" 2>/dev/null | grep 'Location: /usr/local/lib/python2.7/dist-packages' >/dev/null; if (( $? == 0 )); then printf " ${REPLY}"; fi; done; echo

从pip的1.3版本开始,您现在可以使用pip list

它有一些有用的选项,包括显示过期包的能力。下面是文档:https://pip.pypa.io/en/latest/reference/pip_list/

PIP冻结列出所有已安装的包,即使不是通过PIP /easy_install。 在CentOs/Redhat上可以找到通过rpm安装的包。

获取site-packages/(以及dist-packages/如果存在的话)中的所有文件/文件夹名,并使用包管理器剥离通过package安装的文件/文件夹名。