当前位置: 首页 > 面试题库 >

识别与pip一起安装的python软件包的依赖关系

贡斌
2023-03-14
问题内容

当我冻结一个点子时,会看到大量未明确安装的Python软件包,例如

$ pip freeze
Cheetah==2.4.3
GnuPGInterface==0.3.2
Landscape-Client==11.01
M2Crypto==0.20.1
PAM==0.4.2
PIL==1.1.7
PyYAML==3.09
Twisted-Core==10.2.0
Twisted-Web==10.2.0
(etc.)

我有办法确定为什么pip安装了这些特定的依赖软件包吗?换句话说,如何确定将这些软件包作为依赖项的父软件包?

例如,我可能要使用Twisted,并且在我不了解不意外卸载或升级它之前,不要依赖于软件包。


问题答案:

您可以尝试使用pipdeptree将依赖项显示为树结构,例如:

$ pipdeptree
Lookupy==0.1
wsgiref==0.1.2
argparse==1.2.1
psycopg2==2.5.2
Flask-Script==0.6.6
  - Flask [installed: 0.10.1]
    - Werkzeug [required: >=0.7, installed: 0.9.4]
    - Jinja2 [required: >=2.4, installed: 2.7.2]
      - MarkupSafe [installed: 0.18]
    - itsdangerous [required: >=0.21, installed: 0.23]
alembic==0.6.2
  - SQLAlchemy [required: >=0.7.3, installed: 0.9.1]
  - Mako [installed: 0.9.1]
    - MarkupSafe [required: >=0.9.2, installed: 0.18]
ipython==2.0.0
slugify==0.0.1
redis==2.9.1

要使其运行:

pip install pipdeptree

编辑: 正如@Esteban在评论中指出的那样,您还可以反向列出树,-r或者使用单个软件包列出,-p <package_name>以便找到可以运行的已安装Werkzeug:

$ pipdeptree -r -p Werkzeug
Werkzeug==0.11.15
  - Flask==0.12 [requires: Werkzeug>=0.7]


 类似资料:
  • 问题内容: 完成后,我将获得已明确安装的软件包以及与这些软件包相关的软件包。 例如: 好的,但是接下来我将这个Requirements.txt安装在另一个环境中,得到的结果与删除的最后两行相同。 所以我的问题是:我如何创建未显示所有可计算依赖关系的最简化的requirements.txt? 问题答案: 现在有(免责声明:我做到了)。 您所需要做的就是从PyPI安装并在Python环境中运行。 如果

  • 问题内容: 如何使用pip列出软件包的依赖关系? 问题答案: 请注意,2012年的答案已经过时。首先,解决方法(答案已经表明您可能在2012年不应该这样做),现在您 不能 这样做。如果您想使用类似的解决方法,则可以使用,但是您所需要的可能性甚至更低。特别是由于已得到改进。幸运的是,该问题已被标记为后面一个问题的重复,因此,除了出于历史目的之外,没有理由阅读此答案。 您不能,至少不能直接。 您可以使

  • 我有一个python包A,它依赖于另一个名为godot的私有包(托管在bitbucket上,应该通过git ssh协议访问)。在包A的设置中。py,我有以下代码: 我这里有两个问题: > 重新安装hghttps://bitbucket.org/pypa/setuptools#egg=setuptools 我几乎解决了这一点,但我想知道是否有其他方法可用?调用pip安装-rrequirements.

  • 问题内容: 我有一台配备OS X El Captain的Macbook。我认为那是预装的。但是,我也安装了。开始使用时,我读到要安装软件包,请输入: 无论如何,现在当我使用 我安装了。我的意思是我可以导入它,并且可以正常使用它。此外,当我只输入时,我会收到有关用法的消息: 这与我输入just时得到的消息相同。 这是否意味着在previos版本,事情是不同的,现在和可以互换使用?如果是这样,并且为了

  • 问题内容: 我正在尝试使用通过该–选项创建的新virtualenv安装MySQL_python适配器的1.2.2版本。PyPi中显示的当前版本是1.2.3。有没有安装旧版本的方法?我发现有一篇文章指出应该这样做: 但是,安装后,它仍显示在站点包中。这是此软件包专用的问题,还是我做错了什么? 问题答案: TL; DR: (即) 首先,我发现你要执行的操作有两个问题。由于已经安装了版本,因此应该卸载当

  • 问题内容: 我在Requirements.txt文件的–global-option和–install- option设置上遇到困难。为一个库指定选项会导致其他库安装失败。 我正在尝试安装Python库“ grab”和“ pycurl”。我需要指定pycurl安装选项:“-with- nss”。我可以在完全干净的虚拟环境中复制错误。 在新的虚拟环境中,带有requirements.txt的文件包含: