gpt4 book ai didi

python - 创建新文件并将其包含到 python 包中

转载 作者:行者123 更新时间:2023-12-01 00:53:40 28 4
gpt4 key购买 nike

我想使用基于 git describe 命令的包版本。为此,我使用函数 get_version() 创建了 setup.py。此函数从 .version 文件中检索版本(如果存在),否则计算新的包版本并将其写入新的 .version 文件。但是,当我调用 python setup.py sdist 时,.version 不会在 .tar 存档内复制。当我尝试从 PyPi 存储库安装包时,这会导致错误。如何正确地将我的 .version 文件“即时”包含到包中?

setup.py:

import pathlib
from subprocess import check_output
from setuptools import find_packages, setup


_VERSION_FILE = pathlib.Path(".version") # Add it to .gitignore!
_GIT_COMMAND = "git describe --tags --long --dirty"
_VERSION_FORMAT = "{tag}.dev{commit_count}+{commit_hash}"


def get_version() -> str:
""" Return version from git, write commit to file
"""
if _VERSION_FILE.is_file():
with _VERSION_FILE.open() as f:
return f.readline().strip()
output = check_output(_GIT_COMMAND.split()).decode("utf-8").strip().split("-")

tag, count, commit = output[:3]
dirty = len(output) == 4

if count == "0" and not dirty:
return tag

version = _VERSION_FORMAT.format(tag=tag, commit_count=count, commit_hash=commit)

with _VERSION_FILE.open("w") as f:
print(version, file=f, end="")

return version


_version = get_version()

setup(
name="mypackage",
package_data={
"": [str(_VERSION_FILE)]
},
version=_version,
packages=find_packages(exclude=["tests"]),
)

最佳答案

如果您在与 setup.py 相同的目录中包含一个名为 MANIFEST.in 的文件,其中包含 include .version,则应该得到文件已拾取。

关于python - 创建新文件并将其包含到 python 包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56386076/

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