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 31 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
对python使用http、https代理的实例讲解
May 07 Python
python os用法总结
Jun 08 Python
python如何爬取个性签名
Jun 19 Python
python使用suds调用webservice接口的方法
Jan 03 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python双向链表原理与实现方法详解
Dec 03 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
Python中glob库实现文件名的匹配
Jun 18 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中使用gettext来支持多语言的方法
2011/05/02 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
Python获取当前路径实现代码
2017/05/08 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
python版DDOS攻击脚本
2019/06/12 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
会计毕业生自荐信
2013/11/21 职场文书
同事吵架检讨书
2014/02/05 职场文书
材料加工工程求职信
2014/02/19 职场文书
初中学生操行评语
2014/12/26 职场文书
运动会100米加油稿
2015/07/21 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python