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

Python可编辑安装中,pyproject.toml版本变更如何自动同步到代码?

解决方案:实时同步pyproject.toml版本到代码__version__

你的问题核心是可编辑安装时,pip生成的静态元数据不会自动同步pyproject.toml的修改,而importlib.metadata.version()读取的是这些静态元数据,所以版本不会更新。以下是两种可行的解决思路:

方法一:直接读取pyproject.toml文件(推荐)

直接从项目根目录的pyproject.toml中解析版本号,每次运行代码时实时读取,修改后立即生效。

代码实现(Python 3.11+)

import tomllib
from pathlib import Path

def _get_version():
    # 根据你的项目结构调整路径,确保指向pyproject.toml
    # 示例:如果__init__.py在src/your_package/下,pyproject.toml在项目根目录
    pyproject_path = Path(__file__).parent.parent.parent / "pyproject.toml"
    with open(pyproject_path, "rb") as f:
        config = tomllib.load(f)
    return config["project"]["version"]

__version__ = _get_version()

兼容Python 3.10及以下

需要先安装tomli(Python 3.11中tomli已并入标准库改名为tomllib):

pip install tomli

然后将代码中的tomllib替换为tomli即可。

方法二:触发元数据更新(半自动)

如果你坚持使用importlib.metadata的方式,修改pyproject.toml后,需要重新执行可编辑安装命令来更新静态元数据:

pip install -e .

但这种方式需要手动触发,无法自动同步,适合不需要频繁修改版本的场景。

注意事项

  • 方法一中的路径要根据你的项目结构调整,比如如果项目是扁平结构(your_package/__init__.py和pyproject.toml同目录),路径改为Path(__file__).parent / "pyproject.toml"即可。
  • 避免硬编码路径,尽量通过__file__的相对路径定位pyproject.toml,确保在不同环境下都能正确读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:15:41