gpt4 book ai didi

python - 在 Python 项目中将元信息(__version__ 等)放在哪里?

转载 作者:行者123 更新时间:2023-11-28 17:20:47 24 4
gpt4 key购买 nike

我有一个带有目录结构的小 Python2/3 项目

superproject/
-> __init__.py
-> meta.py
setup.py

__init__.py 文件包含一堆import 和实际代码,meta 有

 __author__ = 'John Doe'
__author_email__ = 'john@doe.com'
__version__ = '1.2.3'
# [...]

我想让元信息在 setup.py 中可用(简单:只需 import superproject.meta)和 superproject as

import superproject
print(superproject.__version__)

我正在努力满足后一个要求。做的时候

from .meta import *

__init__.py中,我只能做

print(superproject.meta.__version__)

例如。

请注意,我不能将元信息直接放在 __init__.py 中,因为我必须在 setup.pyimport superproject ,并且 superproject 的众多 import 依赖项当时还不可用。

有什么提示吗?

最佳答案

这是一个已知问题,Python 软件基金会有一整篇关于它的文章:Single-sourcing the Project Version .

我仔细考虑了所有建议并最终决定采用以下解决方案。

  1. meta.py 重命名为 __about__.py 并将 from ... import ... 重命名为 __init__.py
  2. setup.py 中,exec __about__.py 到字典中并使用该信息。

这提供了所有元信息作为 superproject.__about__.__version__ 以及 superproject.__version__。此外,这使得从 superproject 的其他子模块import 元信息变得容易。

虽然它为 setup.py 增加了一些复杂性,但它基本上没有影响实际的项目代码。我真的不在乎 setup.py 有多复杂,只要它是可远程维护的。

关于python - 在 Python 项目中将元信息(__version__ 等)放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41743296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com