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 pickle 和 shelve模块的用法
Sep 16 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
Python selenium抓取微博内容的示例代码
May 17 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 Python
查看python下OpenCV版本的方法
Aug 03 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
django 单表操作实例详解
Jul 30 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
Python3+Flask安装使用教程详解
Feb 16 Python
Python学习之迭代器详解
Apr 01 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中的时间显示
2007/01/18 PHP
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
如何对python的字典进行排序
2020/06/19 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
介绍一下Linux文件的记录形式
2012/04/18 面试题
大学毕业生工作的自我评价
2013/10/01 职场文书
客服专员岗位职责范本
2013/11/29 职场文书
企业职业病防治方案
2014/05/29 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
矛盾论读书笔记
2015/06/29 职场文书
学风建设主题班会
2015/08/17 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Python实现双向链表
2022/05/25 Python