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服务器拒绝服务攻击代码
Jan 16 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
python多线程分块读取文件
Aug 29 Python
softmax及python实现过程解析
Sep 30 Python
浅谈Python type的使用
Nov 19 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
python实现翻译word表格小程序
Feb 27 Python
django ORM之values和annotate使用详解
May 19 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
python神经网络编程之手写数字识别
May 08 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
php输出xml属性的方法
2015/03/19 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
python进阶教程之循环对象
2014/08/30 Python
用python找出那些被“标记”的照片
2017/04/20 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
python批量创建指定名称的文件夹
2019/03/21 Python
python简单实现AES加密和解密
2019/03/28 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
浅谈Python中的模块
2020/06/10 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
请假条标准格式规范
2014/04/10 职场文书
工地宣传标语
2014/06/18 职场文书
2014年电教工作总结
2014/12/19 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
学习经验交流会策划书
2015/11/02 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis