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


当前回答

正如@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

其他回答

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

下面是fedora或其他rpm发行版的一行代码(基于@barraponto tips):

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'

将此附加到上一个命令以获得更清晰的输出:

 | sed -r 's:.*/(\w+)/__.*:\1:'

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

pip show [options] <package>

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

PIP列表[选项] 你可以在这里看到完整的参考资料

在保罗·伍尔考克的回答中,

pip freeze > requirements.txt

将在当前位置的活动环境中创建一个包含所有已安装包和已安装版本号的需求文件。运行

pip install -r requirements.txt

将安装需求文件中指定的包。