gpt4 book ai didi

python - 为 python 包创建一个 __version__ 属性而不会遇到麻烦

转载 作者:太空狗 更新时间:2023-10-29 17:20:20 31 4
gpt4 key购买 nike

在阅读了 python 文档 ( http://www.python.org/dev/peps/pep-0396/ ) 之后,我比以前更困惑如何正确地为包设置 __version__ 属性。提到将它们放入 setup.py 文件,这让我感到困惑:它不会作为 my_package.__version__ 提供,是吗?

我最终从一个单独的文件中导入了版本属性。

所以我的“版本”文件通常是

my_package/
__init__.py
my_module1/
...
my_module2/
...
my_module3/
...
info/
__init__.py
version.py
__version__ = '0.1.0'

在最上面的 __init__.py 中,我导入了 __version__ 属性来自 info.version :

导入 __version__

这样就可以通过

获取版本号
my_package.__version__

我只是想知道这是否是一种“好的”方法,是否有人反对这样做?期待您的意见和建议!

最佳答案

一种解决方案是在您的 __init__.py 文件中定义 __version__ 并从 setup.py 中读取它。这意味着您只需更改一个位置的版本。我写了一个小函数来做这个:

from setuptools import setup
import re

def get_property(prop, project):
result = re.search(r'{}\s*=\s*[\'"]([^\'"]*)[\'"]'.format(prop), open(project + '/__init__.py').read())
return result.group(1)

project_name = 'YOUR PROJECT'
setup(
...,
version = get_property('__version__', project_name),
...,
)

您还可以使用它来获取诸如 __author____init__.py 文件中定义的任何其他内容

关于python - 为 python 包创建一个 __version__ 属性而不会遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791481/

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