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实现线程状态监测简单示例
Mar 28 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
python中metaclass原理与用法详解
Jun 25 Python
django的csrf实现过程详解
Jul 26 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
Python 寻找局部最高点的实现
Dec 05 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
python中time.ctime()实例用法
Feb 03 Python
OpenCV-Python模板匹配人眼的实例
Jun 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
PHP实现百度人脸识别
2019/05/06 PHP
JavaScript中的排序算法代码
2011/02/22 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
电气技术员岗位职责
2013/11/19 职场文书
物流仓管员岗位职责
2013/12/04 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
老干部工作汇报材料
2014/10/28 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python