Python 分发包中添加额外文件的方法


Posted in Python onAugust 16, 2019

在制作一个 Python 分发包时经常需要把一些文件添加到包中。最常见的例子是你希望通过 
pip install 命令安装 Python 包时会在 
/etc/ 等目录下自动添加默认配置文件,由此可以让 Python 安装完成就可以工作,同时也可以给用户提供配置样例参考。

参考 Installing Additional Files

如果使用 setuptools,在 setup.py 文件中可以通过 data_files 配置项配置分发包的额外文件, 格式为: (<安装位置>, [<文件1>, <文件2>, ...])

# setup.py
from setuptools import setup
setup(...,
  data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
     ('config', ['cfg/data.cfg'])],
 )

上面的示例 <安装位置> 使用了相对路径,在安装时会根据安装前缀如 sys.prefix (系统级安装) 和 site.USER_BASE (用户级安装)解释为绝对路径。虽然也可以使用绝对路径,但不推荐这么做,因为 这与 wheel 格式的分发包不兼容。文件路径同样也是相对路径,其路径起点为 setup.py 文件所在目录, 即项目的根目录,注意文件不能被重命名。

如果使用 pbr 帮助打包,声明额外文件的方法与上述类似, 需要在 setup.cfg 如下配合

[files]
packages =
 pbr
data_files =
 etc/pbr = etc/*
 etc/init =
  pbr.packaging.conf
  pbr.version.conf

总结

以上所述是小编给大家介绍的Python 分发包中添加额外文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python模拟登录并且保持cookie的方法详解
Apr 04 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
python爬取微信公众号文章
Aug 31 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
django rest framework使用django-filter用法
Jul 15 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 Python
python垃圾回收机制原理分析
Apr 13 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 #Python
基于django传递数据到后端的例子
Aug 16 #Python
Django 拆分model和view的实现方法
Aug 16 #Python
利用Python实现kNN算法的代码
Aug 16 #Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 #Python
python爬虫 爬取超清壁纸代码实例
Aug 16 #Python
Python PO设计模式的具体使用
Aug 16 #Python
You might like
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
javascript常用对话框小集
2013/09/13 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
django用户登录和注销的实现方法
2018/07/16 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Pytorch之Variable的用法
2019/12/31 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
综合办公室主任职责
2013/12/16 职场文书
简单英文演讲稿
2014/01/01 职场文书
妇产医师自荐信
2014/01/29 职场文书
岗位工作说明书
2014/07/29 职场文书
期中考试复习计划
2015/01/19 职场文书
讲文明倡议书
2015/04/29 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
创业计划书介绍
2019/04/24 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
5道关于python基础 while循环练习题
2021/11/27 Python
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android