【问题标题】:How do I embed the version from pyproject.toml so my package can use it?如何从 pyproject.toml 嵌入版本以便我的包可以使用它?
【发布时间】:2023-01-17 16:40:08
【问题描述】:

我项目中的版本存放在pyproject.toml


[tool.poetry]
name = "package_name"
version = "1.2.3"
# ...

我现在想在package_name/__init__.py 中也有一个__version__,一般建议似乎是:

import importlib_metadata

__version__ = importlib_metadata.version('package_name')

但这对我不起作用。当我运行我的单元测试时,我得到了这个错误:

importlib_metadata.PackageNotFoundError: No package metadata was found for package_name

我怎样才能在开发过程中完成这项工作?

【问题讨论】:

  • 确保 package_name 已实际安装,因为它需要安装,否则不会为 importlib.metadata 创建实际的元数据以供读取。 -- 你也不需要__version__;这是一种从未标准化的过时做法,如果我是你,我会删除它。
  • @sinoroc 我正在开发这个包,在我构建它之前我应该​​如何安装它?
  • 安装为所谓的“可编辑”,无论如何这是 Poetry 的默认行为。我想运行poetry install,你应该可以开始了。 -- 每次更改pyproject.toml 中的“元数据”后都需要重新运行poetry install,以使用新值重新生成已安装的元数据。

标签: python-import python-packaging python-poetry python-importlib


【解决方案1】:

您可以尝试将此添加到__init__

from ._version import version as __version__

source

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2010-11-07
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多