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

开发时如何从pyproject.toml嵌入版本到Python包并解决测试报错

开发环境下解决importlib_metadata版本读取报错的方案

方案1:通过Poetry以可编辑模式安装包

  • 执行以下命令,将本地包以可编辑方式安装到当前环境,让importlib_metadata能读取到包的元数据:
    poetry install
    
    该命令会自动处理项目依赖,同时把你的包链接到环境中,单元测试时就不会触发PackageNotFoundError。

方案2:直接从pyproject.toml读取版本号

跳过importlib_metadata,直接解析本地配置文件获取版本:

from pathlib import Path
import tomllib  # Python 3.11+ 可用,旧版本需安装tomli库

def get_version():
    pyproject_path = Path(__file__).parent.parent / "pyproject.toml"
    with open(pyproject_path, "rb") as f:
        pyproject_data = tomllib.load(f)
    return pyproject_data["tool.poetry"]["version"]

__version__ = get_version()

这种方式无需安装包,直接读取本地文件,适合开发环境快速解决问题。

方案3:添加兼容开发/生产的降级逻辑

保留生产环境的元数据读取方式,开发环境降级读取配置文件:

try:
    import importlib_metadata
    __version__ = importlib_metadata.version("package_name")
except importlib_metadata.PackageNotFoundError:
    from pathlib import Path
    import tomllib

    pyproject_path = Path(__file__).parent.parent / "pyproject.toml"
    with open(pyproject_path, "rb") as f:
        pyproject_data = tomllib.load(f)
    __version__ = pyproject_data["tool.poetry"]["version"]

该方案兼顾生产环境的标准流程和开发环境的便捷性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:15:17