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 相关文章推荐
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
Python时间戳使用和相互转换详解
Dec 11 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
python实现弹窗祝福效果
Apr 07 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
python使用建议与技巧分享(二)
Aug 17 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
python palywright库基本使用
Jan 21 Python
Python中threading库实现线程锁与释放锁
May 17 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 转义使用详解
2013/07/15 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
围观tangram js库
2010/12/28 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript手机振动API
2016/06/11 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
Python爬虫模拟登录带验证码网站
2016/01/22 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
违反工作纪律检讨书
2014/02/15 职场文书
大学军训感言600字
2014/02/25 职场文书
情况说明书格式范文
2014/05/06 职场文书
读群众路线的心得体会
2014/09/03 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
KTV员工管理制度
2015/08/06 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS