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使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
python之wxPython菜单使用详解
Sep 28 Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
python进度条显示之tqmd模块
Aug 22 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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中使用Oracle数据库(6)
2006/10/09 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
Python聊天室程序(基础版)
2018/04/01 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
linux环境下Django的安装配置详解
2019/07/22 Python
如何理解Python中的变量
2020/06/01 Python
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
花卉与景观设计系大学生求职信
2013/10/01 职场文书
骨干教师培训感言
2014/01/16 职场文书
英语简历自我评价
2014/01/26 职场文书
建筑工地大门标语
2014/06/18 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python
python 判断文件或文件夹是否存在
2022/03/18 Python