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爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
Python中decorator使用实例
Apr 14 Python
在Python下尝试多线程编程
Apr 28 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
Php多进程实现代码
May 07 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Django框架视图介绍与使用详解
Jul 18 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
Python的垃圾回收机制深入分析
2014/07/16 Python
Python二分法搜索算法实例分析
2015/05/11 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
中年人生感言
2014/02/04 职场文书
小学运动会入场口号
2015/12/24 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
只用Python就可以制作的简单词云
2021/06/07 Python
HTML+JS实现在线朗读器
2022/02/15 Javascript
配置nginx负载均衡
2022/05/06 Servers