【问题标题】:Get name of installation directory for pip installed package获取 pip 安装包的安装目录名称
【发布时间】:2022-01-23 20:30:07
【问题描述】:

我需要获取一个使用pip安装的Python3包的安装目录。

我有一个包裹,比如说mkdocs-mermaid2-plugin

pip install mkdocs-mermaid2-plugin // being installed to site-packages/mermaid2

如果我在 Python 中使用这个包,我可以这样做import mermaid2

我需要一个脚本,它为给定的 Python 包名称​​mkdocs-mermaid2-plugin输出安装目录的名称。

$ ./print-installation-directory-of-package.py mkdocs-mermaid2-plugin
mermaid2

【问题讨论】:

    标签: python-3.x pip


    【解决方案1】:

    你可以通过 pip 命令来做到这一点

    pip show mkdocs-mermaid2-plugin
    

    这将显示有关该 pip 包的所有信息

    如果您想获取有关安装了哪些软件包的信息,您可以这样做

    pip list
    

    例子:

    pip show xkit
    

    返回

    Name: xkit
    Version: 0.0.0
    Summary: library for the manipulation of the xorg.conf
    Home-page: https://launchpad.net/x-kit
    Author: Alberto Milone
    Author-email: albertomilone@alice.it
    License: GPL v2 or later
    Location: /usr/lib/python3/dist-packages
    Requires:
    Required-by:
    

    如果您只想返回位置,您可以使用以下方法来执行此操作

    pip show xkit | grep -F Location
    

    【讨论】:

    • 感谢您的回答!希望我是盲人,但这并没有显示实际的安装目录。请记住,在我的示例中,包名和安装目录是不同的。
    • 本例中的安装目录是位置,上面的例子是在linux上运行的,但在windows上应该以同样的方式工作
    • 但我正在搜索 /usr/lib/python3/dist-packages/xkit,而不是 /usr/lib/python3/dist-packages(在 xkit 情况下,我可以只附加“xkit”到 pip show 提供的“位置:”,但在我的示例中我不能)。
    【解决方案2】:

    用法:

    $ ./print-directory-of-module.py mkdocs-mermaid2-plugin
    mermaid2
    

    来源:

    #!/usr/bin/env python
    import os
    import sys
    import importlib.metadata
    from importlib.metadata import distribution
    
    args = sys.argv[1:]
    if len(args) > 0:
      try:
        dist = distribution(args[0])
      except importlib.metadata.PackageNotFoundError as e:
        print('Package {} not found'.format(e), file=sys.stderr)
        sys.exit(1)
    
      pathToTopLevelFile = os.path.join(dist._path, "top_level.txt")
      f = open(pathToTopLevelFile)
    
      print(f.read().strip())
    

    这个解决方案有效 - 但丑得要命,一定有更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多