Python 如何使用PIP查看依赖于某个包的所有包?

Python 如何使用PIP查看依赖于某个包的所有包?,python,package,pip,Python,Package,Pip,我希望看到依赖于具有PIP的特定包的包的列表。也就是说,给定django,我希望看到django cms,django文件管理器,因为我已经安装了这些软件包,它们都有django作为依赖项。非常简单: pip show <insert_package_name_here>| grep ^Requires 在此之前,将搜索字符串设置为: REQUIRES=django 基本上,您必须遍历整个列表并查询每个列表。这可能需要一些时间 编辑: 此外,它只在已安装的软件包上工作,我看不到

我希望看到依赖于具有PIP的特定包的包的列表。也就是说,给定
django
,我希望看到
django cms
django文件管理器
,因为我已经安装了这些软件包,它们都有
django
作为依赖项。

非常简单:

pip show <insert_package_name_here>| grep ^Requires
在此之前,将搜索字符串设置为:

REQUIRES=django
基本上,您必须遍历整个列表并查询每个列表。这可能需要一些时间


编辑:
此外,它只在已安装的软件包上工作,我看不到pip提供对未安装软件包的依赖关系。

这一个,对于早于1.3.1的pip将列出所有软件包及其依赖关系,您可以使用任何脚本语言解析其输出,因为
需要。。。django
包含:

pip freeze | cut -f 1 -d'=' |  xargs -L1 pip show 
例如,以下代码段:

import os
import re

package = 'numpy'
regex = re.compile('.*{}($|,).*'.format(package))

def chunks(l, n): return [l[i:i+n] for i in range(0, len(l), n)]

cmd = "pip freeze | cut -f 1 -d'=' |  xargs -L1 pip show"
packages = os.popen(cmd).read()
pkg_infos = chunks(packages.splitlines(), 5)
print '\n'.join(x[1][6:] for x in filter(lambda x: regex.match(x[-1]), pkg_infos))

在我的系统上输出
pandas

基于requirements.txt的一行程序。在本例中,我查找
funcsigs
反向依赖项,并找到mock。只需通过其他方式更改
funcsigs

cat requirements.txt | grep -v git | sed 's/==.*//' | xargs -I % echo 'pip show % 2>/dev/null | grep Requires | grep -q funcsigs && echo %' | sh

我知道这里已经有一个公认的答案,但实际上,在我看来,你想要的是使用:


从版本10开始,
pip show
还包括一个“Required by”条目。那就

pip show <package_name>
pip显示
现在已经足够了。或者可能

pip show <package_name> | grep ^Required-by
pip显示| grep^需要

如果你只想得到一行脚本之类的东西。

你搞错了。我想看看什么需要给定的包,而不是什么需要给定的包。@DonQuestion,但这只显示了当前安装的包,对吗?是否仍要搜索整个PyPi列表?这不起作用,但返回一个错误:用法:pip show[options]。。。没有这样的选项:-------------将此留给我悲伤的自己,同时跳过警告,在$中NAME的不推荐的python版本
上运行此命令(python-W ignore-m pip freeze | cut-d=-f1);do REQ=$(python-W ignore-m pip show$NAME | grep Requires);如果[[“$REQ”=~“$REQUIRES”];然后echo$REQ;echo“包:$NAME”;回声“--”;fi;完成
我在寻找更直接的东西,它只需要一些shell命令。@linkyndy看看我的答案!:-)PIP安装:
PIP 1.4.1
应被接受回答!理由:一,。在python生态系统上工作,对于python开发人员来说,比@Don_Question的答案更舒服。2.非常简单的命令3。提到专门为解决OP的问题而设计的CLI工具,您在这里说得有道理!但皮德普特里比这个问题年轻得多。如果你需要一个一次性的解决方案,你真的不想安装一个软件包,当你可以在shellscript的“一”行中安装时
pip show <package_name>
pip show <package_name> | grep ^Required-by