栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在setup.py中包含非Python文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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()
功能。有关更多信息,请参见添加非代码文件。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号