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的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
python+opencv实现动态物体识别
Jan 09 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
python使用matplotlib绘制热图
Nov 07 Python
在python里面运用多继承方法详解
Jul 01 Python
python logging模块的使用总结
Jul 09 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
Python基础知识之变量的详解
Apr 14 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
10个值得深思的PHP面试题
2016/11/14 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
Python交换变量
2008/09/06 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python中的itertools的使用详解
2020/01/13 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
navabi英国:设计师大码女装
2019/06/25 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
医科大学生毕业的自我评价分享
2013/11/12 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
思想道德自我评价2015
2015/03/09 职场文书
同事去世追悼词
2015/06/23 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python