gpt4 book ai didi

python - 如何找到对python包的反向依赖

转载 作者:行者123 更新时间:2023-12-04 18:05:16 25 4
gpt4 key购买 nike

我有一个虚拟环境,其中安装了 elasticsearch python 包。

我想找到哪个包依赖于 elasticsearch 并在虚拟环境中安装。

(.venv)root@test:~# pip freeze | grep elast
elasticsearch==1.4.0.dev0

我尝试了来自 show reverse dependencies with pip? 的一些解决方案但它不起作用

(.venv)root@test:~# python
Python 2.7.8 (default, Oct 18 2014, 12:50:18)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pip
>>> package_name = 'elasticsearch'
>>> rev_dep = [pkg.project_name for pkg in pip.get_installed_distributions() if package_name in [requirement.project_name for requirement in pkg.requires()]]
>>> rev_dep
[]
>>>

模块路径返回虚拟环境路径。

(.venv)root@test:~# python -c 'import elasticsearch; print elasticsearch.__path__'
['/opt/venvs/.venv/local/lib/python2.7/site-packages/elasticsearch']

我怀疑 elasticsearch debian 包可能安装在这个 python 包中,但不确定。

(.venv)root@test:~# dpkg -l | grep elast
ii elasticsearch 1.2.0 all Open Source, Distributed, RESTful Search Engine

最佳答案

第 1 步。找到您的 virtualenv 的站 pip 包目录:

请注意我的 shell 提示符显示 venv38 和最后的 egrep。

(venv38) myuser@foo$ python -m 站 pip | egrep venv38

site.py 模块有各种有趣的信息,但我们只对 venv 的站 pip 包感兴趣。

输出:

'/Users/myuser/kds2/py2/venv38/lib/python3.8/site-packages',

第 2 步。在 *dist-info/METADATA 文件中查找依赖项

切换到您在上面找到的站 pip 包目录。

我正在寻找谁在使用 bleach 而不是 elasticsearch

cd /Users/myuser/kds2/py2/venv38/lib/python3.8/site-packages

find . -name METADATA -exec grep -H -i bleach {} \; | grep Requires-Dist

注意:虽然这里不必担心,但包名中的 -_ 等字符可能会影响 grep 的编写方式。

输出:

./readme_renderer-24.0.dist-info/METADATA:Requires-Dist: bleach (>=2.1.0)

因此,readme_renderer 是引入这种依赖的原因。

注意使用 find 。 -name METADATA -exec grep -H Requires-Dist {}\; | grep bleach 即在 Requires-Dist 和您搜索的包之间交换 grep 序列也不起作用,因为在我的例子中,它显示了很多 bleach 自己的依赖项.

关于python - 如何找到对python包的反向依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28214608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com