python打包和添加数据文件_Python打包时添加非代码文件的坑
Title: Python打包时添加非代码文件的坑 Tags: python, 小结
对于 Python 的打包, 通常有两种, 一种是对源文件打包, 一种是安装包, 既在上传 pypi 的时候一般会执行
python3 setup.py sdist bdist_wheel
使用pip安装的时候一般是安装bdist打包出来的文件。
关于在打包中加入非程序文件, 有几种方法, 一种是在 http://MANIFEST.in 中加入, 对于 setup.py 中也提供了package_data参数, 另外对于 setuptools 还提供了特别的 include_package_data的参数, 接下来介绍这些参数的意义和怎么用。
http://MANIFEST.in文件是针对 源文件打包 的, 当需要把非程序文件, 包括README, css或者test文件等加入时, 在http://MANIFEST.in中指定, 用于生成MANIFEST
MIANIFEST会暗中自动寻找以下的文件:所有py_modules 和 packages中没有明确说明的python文件
ext_modules 或 libraries选项中指明的C文件
scripts指明的文件
所有看上去像是test文件的, 比如tests/*.py
README.txt 或者 README, setup.py, setup.cfg
package_data中指明的文件
data_files中指明的文件
package_data
package_data是在setup.py中的参数, 用于控制安装包里面包含的文件。
应该这样理解, MANIFEST 控制 sdist 包含的内容, package_data控制bdist包含的内容。
一般情况是, 对源文件打包里面一般包含README, tests这些, 但是对于安装包这不需要。 所以分开设置。
include_package_data
坑就是指include_package_data, 这个参数是setuptools特有的, 但是非常容易让人误解然后勿用。 setuptools的文档中是这样写的If set to True, this tells setuptools to automatically include any data files it finds inside your package directories that are specified by your http://MANIFEST.in file. For more information, see the section below on Including Data Files.
设为 True 时, 打包时setuptools 会自动加入在 http://MANIFEST.in中指定的文件。
原本是 MANIFEST 在 setup.py 中的package_data寻找额外的文件的, 现在变成大家以 http://MANIFEST.in 为准了。
这会发生什么事情呢, 如果你同时用了include_package_data和package_data, 那么你的 sdist 就会瞬间爆炸。
bdist 打包出来的东西会包含package_data中的内容, 但是源代码打包的时候就会失去在package_data中指明的文件。
总结
永远也不要用include_package_data
http://MANIFEST.in 用来给源文件打包, 里面包含许多额外的信息, 比如测试文件之类的。
package_data用于指定安装时加入的额外的文件, 不需要再http://MANIFEST.in中重复定义, 源文件打包的时候回自动包含这里面的文件。
参考:
2016年12月12日01:04:25
python打包和添加数据文件_Python打包时添加非代码文件的坑相关推荐
- python画图添加数据标签_Python plt.bar 添加数据标签
def plot_result(count_df): fig = plt.figure() #use a figure size of (20, 8),bar width of 0.8, 设置图片大小 ...
- pypi打包非代码文件
pypi打包非代码文件 在使用pypi给自己的python程序打包的时候,对于非*.py的文件,默认是不会打包的.因此可以在MANIFEST.in中包括一些非代码文件,如*.yml,*.txt等等.并 ...
- FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。附文件重命名代码
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件.附文件重命名代码 问题: FileExistsError: [WinError 183] 当文件已存在时 ...
- python反编译加密文件_python打包的二进制文件反编译
简介 Pyhton是一个脚本语言,在运行Python代码时,最终由Python解释器来执行.解释器就是Python的运行环境,但是除了开发人员,大部分人在使用时并不会安装Python.所以官方就提供了 ...
- python读取压缩文件的指定后缀的文件_python打包压缩、读取指定目录下的指定类型文件...
下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...
- python中csv文件添加数据标签_Python对csv格式文件进行数据分析
csv格式文件数据分析 1.下载数据 1.1下载数据,处理csv格式文件的数据 安装csv模块,在网上下载或者自己写一个csv格式的文件 也可以访问官网,不过很多人下不了这些文档,我这的下载积分只要1 ...
- python 打包 .app 运行 控制台窗口_Python打包工具
1 Python打包工具 目前在windows平台上将Python程序打包成exe文件主要有三个工具. 今天将一个Tkinter写的界面程序打包成exe文件,三个工具都试了一遍,感觉PyInstall ...
- python打包exe有什么用_Python 打包exe
目前有好几种方法可以将python文件打包成exe应用程序文件,例如py2exe,pyinstaller等,比较下来,还是觉得pyinstaller使用起来比较简单. 首先第一步下载安装pyinsta ...
- python 打包 .app 运行 控制台窗口_Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法...
windows系统下安装Pyinstaller cmd下输入指令 pip install PyInstaller Pyinstaller的使用 进入需要打包的目录下,执行打包命令 Pyinstalle ...
最新文章
- 微信支付:小微商户申请入驻第二步:图片上传
- C语言经典例19-完数
- 具有实际意义的5种云遣返
- python ftp 上传文档出现 553 Could not create file
- 3001基于哈夫曼树的数据压缩算法(附思路及注释)
- 前端Vue3中级视频(240分钟)评分95分
- 基于OWIN WebAPI 使用OAuth授权服务【客户端验证授权(Resource Owner Password Credentials Grant)】...
- Js求时间差、并转换为字符串
- 这三种研发工程师千万不能招?
- 【译文】人工智能给伦敦带来了它的大脑和经济收益
- 均值定理最大值最小值公式_超急关于不等式最大值最小值的求法
- 【Scratch案例实操】Scratch字母排序 scratch编程案例教学 scratch创意编程 少儿编程教案
- 致敬钢铁侠!!!!!
- 程序员进阶!阿里P7级别面试经验总结,深度好文
- 中国招聘网站调研报告
- sizeof结构体指针
- 华为18级工程师历时五年总结出趣谈网络协议(大牛精讲)
- SAP中采购订单收货和发票收据选项的控制逻辑分析
- java中 如果类c_Java中,如果类C是类B的子类,类B是类A的子类,那么下面描述正确的是( )。_学小易找答案...
- IText7添加图片覆盖文字
热门文章
- qt向服务器传输文字_Qt实现客户端与服务器消息发送
- 跨境电商独立站,该如何去经营呢?
- 独立站大卖家都在用的运营技巧?
- 模拟地铁乘车推荐c语言,模拟地铁新手攻略 新手必看三要素
- 已安装过matplotlib但提示ModuleNotFoundError: No module named ‘matplotlib‘的解决方法
- 机器学习实战(六)AdaBoost元算法
- 飞利浦医疗收购Direct Radiology,加强远程放射学服务能力
- Keil5配置GCC编译器编译STM32工程
- 机器学习13/100天-SVM实践
- cdo收取邮件_C#使用CDO发送邮件的方法