在setup.py中包含非Python文件

在setup.py中包含非Python文件,第1张

在setup.py中包含非Python文件

可能最好的方法是使用

setuptools

package_data
指令。这确实意味着要使用
setuptools
(或
distribute
)而不是
distutils
,但这是一个非常无缝的“升级”。

这是完整(但未经测试)的示例:

from setuptools import setup, find_packagessetup(    name='your_project_name',    version='0.1',    description='A description.',    packages=find_packages(exclude=['ez_setup', 'tests', 'tests.*']),    package_data={'': ['license.txt']},    include_package_data=True,    install_requires=[],)

请注意此处的关键行:

package_data={'': ['license.txt']},include_package_data=True,

package_data
dict
包名称(空=所有包)到模式列表(可以包含glob)的形式。例如,如果您只想指定包中的文件,也可以这样做:

package_data={'yourpackage': ['*.txt', 'path/to/resources/*.txt']}

此处的解决方案绝对是

py
使用
.py
扩展名重命名非文件。

有关更多信息,请参见Ian Bicking的演示文稿。

更新:另一种[更好]的方法

如果您只想控制源代码分发(

sdist
)的内容并使文件位于软件包外部(例如,顶级目录),则另一种有效的方法是添加
MANIFEST.in
文件。有关此文件的格式,请参见Python文档。

自编写此回复以来,我发现使用

MANIFEST.in
通常是一种较为轻松的方法,只需确保您的源分发(
tar.gz
)具有所需的文件即可。

例如,如果您要包括

requirements.txt
来自顶层的目录,则递归包括顶层“数据”目录:

include requirements.txtrecursive-include data *

不过,为了在安装时将这些文件复制到site-
packages内软件包的文件夹中,您需要提供

include_package_data=True
setup()
功能。有关更多信息,请参见添加非代码文件。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5631124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存