You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python库pip名称与导入名称不一致,如何查询对应关系?

解决pip包名与Python导入名不一致的查询问题

当你遇到ModuleNotFoundError,怀疑是pip安装的包名和代码中导入的名称不匹配时,可以用以下几种方法快速查询对应关系:

1. 查看包的安装目录结构

  1. 先用pip show <pip包名>获取包的安装路径,比如查询pycryptodome:
    pip show pycryptodome
    
    输出里的Location字段就是包的安装目录。
  2. 进入该目录下的site-packages文件夹,找到对应包的顶层文件夹名称——这个就是Python代码中需要用的导入名。比如pycryptodome安装后,site-packages里会有Crypto文件夹,所以导入用import Crypto。

2. 查看包的配置文件

  1. 用pip download <pip包名> --no-deps下载包的源码压缩包,解压后查看:
    • 旧版包会有setup.py,里面的packages参数或py_modules参数会明确标注导入名;
    • 新版包会有pyproject.toml,查看[project]下的packages字段。

3. 用Python代码自动查询

运行以下代码,替换目标pip包名即可返回对应的导入名:

import pkgutil
import importlib.metadata

def get_import_name(pip_package_name):
    # 遍历所有已安装的包
    for dist in importlib.metadata.distributions():
        # 忽略大小写匹配pip包名
        if dist.metadata["Name"].lower() == pip_package_name.lower():
            # 获取包内的顶层模块名
            for module in pkgutil.iter_modules(dist.files):
                return module.name
    return "未找到对应导入名"

# 示例:查询pycryptodome的导入名
print(get_import_name("pycryptodome"))  # 输出:Crypto

4. 常见不一致包清单

整理了部分高频遇到的包对应关系:

  • pycryptodome → Crypto
  • beautifulsoup4 → bs4
  • python-dateutil → dateutil
  • pyyaml → yaml
  • opencv-python → cv2
  • pillow → PIL

内容的提问来源于stack exchange,提问作者Bagheera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:10:42