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

如何确定Python包的导入名与项目名的对应关系?

解决Python包导入名与项目名映射的问题

一、获取每个包的导入名

  • 查看源码目录结构:直接看包的源码根目录,能被Python导入的目录(Python 3.3+支持无__init__.py的命名空间包,低版本需要包含该文件)的名称就是导入名。比如导入用import abc_def,源码里必然存在abc_def目录。
  • 从已安装环境查询:如果包已安装到Python环境,执行pip show <项目安装名>,在输出的Location字段找到安装路径,进入后查看实际的包目录名,即为导入名。
  • 解析配置文件的隐含设置:
    • 带setup.py的包:导入名由packages参数指定(如packages=['abc_def']),或通过find_packages()自动识别的目录名;若用了package_dir配置(如package_dir={'': 'src'}),则看对应源码目录下的包名。
    • 用pyproject.toml的包:导入名通常由[tool.setuptools.packages]下的配置决定,比如find = {}会自动识别源码里的包目录;若用Poetry,则看[tool.poetry]下的packages配置(如packages = [{ include = "abc_def" }])。你之前没找到可能是因为用了自动发现逻辑,未显式配置。

二、通过导入语句反查项目名

  • 从已安装环境反向追溯:
    1. 在Python交互环境执行以下代码,获取模块路径:
      import abc_def
      print(abc_def.__file__)
      
    2. 根据路径找到包的根目录,查看同级的dist-info或egg-info文件夹(如company_name_abc_def.dist-info),文件夹名通常对应项目安装名;或进入该文件夹查看METADATA文件,其中Name字段即为项目安装名。
  • GitLab仓库批量排查:若包未安装,可批量遍历仓库:
    • 检查每个仓库的源码目录,定位导入名对应的目录;
    • 查看仓库内的setup.py、pyproject.toml或requirements.txt文件,提取项目名称;
    • 结合安装命令规律(如pip install company-name-abc-def)匹配对应导入名。

三、规范配置避免后续混乱

  • 不管用setup.py还是pyproject.toml,显式指定项目名和导入名:
    • 在setup.py中明确写name="company-name-abc-def"和packages=["abc_def"];
    • 在pyproject.toml的[tool.setuptools]下设置name = "company-name-abc-def",并在[tool.setuptools.packages]里指定include = ["abc_def"];
  • 给每个仓库添加README文档,明确标注项目安装名和导入名,方便后续快速查找。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:16:00