获取 pip 安装包的安装目录名称

Posted

技术标签:

【中文标题】获取 pip 安装包的安装目录名称【英文标题】:Get name of installation directory for pip installed package 【发布时间】: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

【问题讨论】:

【参考方案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())

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

【讨论】:

以上是关于获取 pip 安装包的安装目录名称的主要内容,如果未能解决你的问题,请参考以下文章

python中的各个包的安装,用pip安装whl文件

一分钟学会Python中pip的安装与使用

在不安装 PyPI 的情况下获取包的要求? [复制]

Python第三方包的安装

python安装pip模块

pip的安装