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 29 Python
Python科学计算环境推荐——Anaconda
Jun 30 Python
用Pygal绘制直方图代码示例
Dec 07 Python
基于Django与ajax之间的json传输方法
May 29 Python
redis之django-redis的简单缓存使用
Jun 07 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
python中时间模块的基本使用教程
May 14 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 Python
Python OpenCV超详细讲解基本功能
Apr 02 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
php格式化json函数示例代码
2016/05/12 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python 元类实例解析
2018/04/04 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
Python二元赋值实用技巧解析
2019/10/25 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
初中化学教学反思
2014/01/23 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
医院工作检讨书范文
2014/02/10 职场文书
《匆匆》教学反思
2014/02/22 职场文书
人事专员岗位说明书
2014/07/29 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
复活读书笔记
2015/06/29 职场文书
小学英语教学随笔
2015/08/14 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书