【发布时间】: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