如何告诉pbr将非代码文件包含在包中

2024-06-16 08:47:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我只有在构建一个Python:阿尔卑斯山图片。复制它有点痛苦,但步骤如下:

Docker容器设置:

$ docker run -it python:3.7-rc-alpine /bin/ash
$ pip install pbr

小软件包设置,包括非python文件

^{pr2}$

设置.py:

from setuptools import find_packages, setup
setup(
    setup_requires=['pbr'],
    pbr=True,
    package_dir={'': 'src'},
    packages=find_packages(where='src'),
)

设置.cfg:

[metadata]
name = test

所有其他文件都是空的。我用docker cp test <docker_container>:/test将它们复制到容器中。在

回到容器中,我现在尝试用cd test; pip wheel -w wheel .构建包,test/src/test中的test.yml将包含在其中,但{}中的不会包含

我不知道为什么会发生这种情况,因为pbr的文档(少得可怜,而且在我看来相当混乱)指出

Just like AUTHORS and ChangeLog, why keep a list of files you wish to include when you can find many of these in git. MANIFEST.in generation ensures almost all files stored in git, with the exception of .gitignore, .gitreview and .pyc files, are automatically included in your distribution.

我找不到允许我显式包含某个文件或文件类型的pbr参数,我希望它存在。在

创建清单.inwith import src/test/sub_test.test.yml实际上解决了这个问题,但是我宁愿理解并避免这种行为。在


Tags: pip文件ofdockerintestimportsrc
1条回答
网友
1楼 · 发布于 2024-06-16 08:47:19

pbr需要git才能正确地编译包含列表的文件,因此可以通过在构建包之前将git安装到构建环境中来解决这个问题。如果是阿尔卑斯山的图像,那就是apk add no-cache git。在


pbr使用.git文件来确定哪些文件应该是包的一部分,哪些不应该是包的一部分,简短的版本是它从setup-调用中的packages参数获取文件列表的交集设置.py以及在当前签出的git分支中提交或暂存的所有内容。在

因此,如果项目没有.git文件,那么还需要额外执行git init; git add src。在

“bug”的原因是pbr默默地假设所有的.py文件都应该在它们是否提交的情况下添加,这使得实际问题更难识别。它也只会在找不到.git文件的情况下抛出一个错误,如果它在那里,但由于没有安装git而无法从中获取任何信息,则不会抛出错误。在

相关问题 更多 >