我正在使用setuptools构建许多数据文件(编译后的翻译,
图标调整大小并转换为其他格式等),我想将这些数据文件的源包含在sdist
中,并将构建结果包括在bdist_wheel
中,但不包括它们的源和中间文件。 / p>
当我同时使用两个来源的package_data
时,中介文件和内置文件将包含在bdist_wheel
中。例如。翻译源(.ts)被编译成.qm文件,然后作为rcc软件包的一部分包含在其中,因此bdist包含三种不同格式的翻译副本,并且图标也一样。
使用setuptools时是否有任何方法可以防止这种情况发生,即sdist
包含源格式的数据文件,而bdist_wheel
仅包含不包含源的构建结果?
答案 0 :(得分:1)
下面是一个最小的示例,展示了如何实现这两个目标:
file.src
中打包数据文件sdist
; file.bin
封装在bdist
中; file.all
打包到两个分发软件包中,而file.not
都不打包在其中。其要旨是:
src/Thing.egg-info
文件和{{1}的SOURCES.txt
目录}和build
目录),否则结果将不一致; dist
选项设置为include_package_data
; True
中指定了file.all
和同时属于sdist
和bdist
的文件; MANIFEST.in
和仅属于file.bin
的文件在bdist
中指定; package_data
和仅属于file.src
的文件在sdist
和MANIFEST.in
中都指定; exclude_package_data
和不属于任何分发程序包的文件不在任何地方指定。示例的目录结构:
file.not
在.
├── MANIFEST.in
├── setup.py
└── src
└── thing
├── __init__.py
└── data
├── file.all
├── file.bin
├── file.not
└── file.src
中:
MANIFEST.in
在recursive-include src/thing *.all
recursive-include src/thing *.src
中:
setup.py
已通过以下测试:
答案 1 :(得分:0)
将目录包括在MANIFEST.in
中(请参阅docs),这完全是用于sdist分发的。不要在include_package_data = True
中使用setup.py
,因为其中包括从MANIFEST.in
到bdist发行版的文件。