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

创建新文件并将其包含到python包中,python,setuptools,Python,Setuptools,我想使用基于git descripe命令的包版本。为此,我使用函数get\u version()创建了setup.py。此函数从.version文件(如果存在)中检索版本,否则计算新的软件包版本并将其写入新的.version文件。但是,当我调用python setup.py sdist时,.version没有在.tar存档中复制。当我试图从PyPi repo安装程序包时,这会导致错误。如何正确地将我的.version文件“动态”包含到包中 setup.py: 导入路径库 从子流程导入检查输出 从

我想使用基于
git descripe
命令的包版本。为此,我使用函数
get\u version()
创建了
setup.py
。此函数从
.version
文件(如果存在)中检索版本,否则计算新的软件包版本并将其写入新的
.version
文件。但是,当我调用
python setup.py sdist
时,
.version
没有在
.tar
存档中复制。当我试图从PyPi repo安装程序包时,这会导致错误。如何正确地将我的
.version
文件“动态”包含到包中

setup.py

导入路径库
从子流程导入检查输出
从setuptools导入查找包,安装
_VERSION_FILE=pathlib.Path(“.VERSION”)#将其添加到.gitignore!
_GIT_COMMAND=“GIT descripe--tags--long--dirty”
_VERSION_FORMAT=“{tag}.dev{commit_count}+{commit_hash}”
def get_version()->str:
“”“从git返回版本,将提交写入文件
"""
如果_VERSION_FILE.is_FILE():
将_VERSION_FILE.open()作为f:
返回f.readline().strip()
输出=检查输出(_GIT_COMMAND.split()).decode(“utf-8”).strip().split(“-”)
标记、计数、提交=输出[:3]
脏=透镜(输出)==4
如果计数=“0”且不脏:
返回标签
version=\u version\u FORMAT.FORMAT(tag=tag,commit\u count=count,commit\u hash=commit)
将_VERSION_FILE.open(“w”)作为f:
打印(版本,文件=f,结束=)
返回版本
_version=get_version()
设置(
name=“mypackage”,
数据包={
“”:[str(\u版本\u文件)]
},
版本=\u版本,
packages=find_packages(exclude=[“tests”]),
)

如果在
setup.py
include.version
位于同一目录中的
MANIFEST.in
中包含一个名为
的文件,则该文件应被拾取。

这是
setup.py
中的错误。我忘了在
中添加文件转储,如果count==“0”且不脏:
。现在它可以与清单一起工作。在
[00:01:03][Step 2/2]中,读取清单模板'MANIFEST.in'[00:01:03][Step 2/2]标准化版本,[00:01:03][Step 2/2]编写清单文件'mypackage.egg info/SOURCES.txt'[00:01:03][Step 2/2]警告:找不到与“.version”TravisCI匹配的文件。TravisCI看不到此文件。这感觉可能是另一个问题。如果您在本地运行,而不是与travis一起运行,它是否适合您?我能够让您的setup.py包正确检测.version文件并将其包含在tar文件中。在这种情况下,您开始时可能没有.version文件吗?如果是这样,你可以试着创建一个虚拟的一个,并检查该部分的作品为你。如果是这样的话,我可以尝试帮助解决no-.version文件部分