是否可以从 bdist 中排除数据文件源和中间文件?

2023-12-04

我正在使用 setuptools 构建许多数据文件(编译的翻译, 图标调整大小并转换为不同的格式等),我想将这些数据文件的来源包含在sdist和构建结果,但不是它们的源和中间文件bdist_wheel.

当我使用package_data源文件、中间文件和构建文件都将包含在bdist_wheel。例如。翻译源 (.ts) 被编译为 .qm 文件,然后作为 rcc 捆绑包的一部分包含在内,因此 bdist 包含不同格式的三个翻译副本,图标也是如此。

使用 setuptools 时有什么方法可以防止这种情况,即sdist包括源格式的数据文件和bdist_wheel仅包含构建结果而不包含来源?


下面是一个最小的示例,展示了如何实现这两个目标:

  • 打包数据文件file.src in sdist only;
  • 并打包另一个数据文件file.bin in bdist only;
  • 另外它还展示了如何file.all打包在两个发行包中并且file.not他们都没有。

其要点是:

  • 首先也是最重要的,在调整这些打包选项时,始终彻底清理两次打包尝试之间的工作目录(特别是清空src/Thing.egg-info目录包含SOURCES.txt文件以及build, and dist目录)否则结果会不一致;
  • set the include_package_data选项True;
  • file.all以及属于两者的文件sdist and bdist指定于MANIFEST.in;
  • file.bin以及属于的文件bdist仅指定于package_data;
  • file.src以及属于的文件sdist仅在两者中都指定MANIFEST.in and exclude_package_data;
  • file.not并且不属于任何分发包的文件不会在任何地方指定。

我们示例的目录结构:

    .
    ├── MANIFEST.in
    ├── setup.py
    └── src
        └── thing
            ├── __init__.py
            └── data
                ├── __init__.py
                ├── file.all
                ├── file.bin
                ├── file.not
                └── file.src

In MANIFEST.in:

recursive-include src/thing *.all
recursive-include src/thing *.src

In setup.py:

#!/usr/bin/env python3

import setuptools

setuptools.setup(
    package_data={'thing': ['data/*.bin']},
    exclude_package_data={'thing': ['data/*.src']},
    include_package_data=True,
    #
    name='Thing',
    version='1.0.0',
    package_dir={'': 'src'},
    packages=setuptools.find_packages(where='src'),
)

这已经过测试:

  • Python 3.6.7
  • 安装工具 39.0.1
  • 轮子0.33.1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以从 bdist 中排除数据文件源和中间文件? 的相关文章

  • 与 iexact 一起使用时,Django get_or_create 无法设置字段

    我想用name iexact with get or create尽可能避免用户输入字段的重复 我的提供者模型有一个名称字段 我在其中使用get or create 查找工作正常 但在第一次创建实例时 如下面的 p1 Timber 示例 名
  • PyList_SetItem 与 PyList_SETITEM

    据我所知 PyList SetItem 和 PyList SETITEM 之间的区别在于 PyList SetItem 会降低它覆盖的列表项的引用计数 而 PyList SETITEM 不会 我有什么理由不应该一直使用 PyList Set
  • 具有多处理功能的 Python 代码无法在 Windows 上运行

    以下简单的绝对初学者代码在 Ubuntu 14 04 Python 2 7 6 和 Cygwin Python 2 7 8 上运行 100 但在 Windows 64 位 Python 2 7 8 上挂起 我使用另一个片段观察到了同样的情况
  • 编辑 scikit-learn 决策树

    我想编辑 sklearn DecisionTree 例如改变条件或切割节点 叶子等 但似乎没有功能可以做到这一点 如果我可以导出到文件 编辑它以导入 如何编辑决策树 环境 Windows 10 python3 3 sklearn 0 17
  • Python:记录垃圾收集器

    我有一个 python 应用程序 有一些性能问题 我想将垃圾收集器的事件 特别是何时调用 添加到我的日志中 是否可以 thanks http docs python org library gc html gc set debug http
  • 子进程改变目录

    我想在子目录 超级目录中执行脚本 我需要首先进入该子目录 超级目录 我无法得到subprocess进入我的子目录 tducin localhost Projekty tests ve python Python 2 7 4 default
  • Python 中的安全解除引用

    Groovy 有一个很好的安全取消引用运算符 这有助于避免 NullPointerExceptions variable method The method仅当以下情况时才会被调用variable is not null 有没有办法在 Py
  • Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

    我有包含字符的 ascii 字符串 x80 代表欧元符号 gt gt gt print x80 当将包含该字符的字符串数据插入数据库时 我得到 psycopg2 DataError invalid byte sequence for enc
  • Python的reduce()短路了吗?

    If I do result reduce operator and False 1000 得到第一个结果后它会停止吗 自从False anything False 相似地 result reduce operator or True 10
  • html 解析器 python

    我正在尝试解析一个网站 我正在使用 HTMLParser 模块 问题是我想解析第一个 a href 评论后 但我真的不知道该怎么做 所以我在文档中发现有一个函数叫做handle comment 但我还没有找到如何正确使用它 我有以下内容 i
  • 如何在 ReportLab 段落中插入回车符?

    有没有办法在 ReportLab 的段落中插入回车符 我试图将 n 连接到我的段落字符串 但这不起作用 Title Paragraph Title n Page myStyle 我想要这样做 因为我将名称放入单元格中 并且想要控制单元格中的
  • 字典中的列表,Python 中的循环

    我有以下代码 TYPES hotmail type hotmail lookup mixed dkim no signatures S Return Path email protected cdn cgi l email protecti
  • 如何找到列表S的所有分区为k个子集(可以为空)?

    我有一个唯一元素列表 比方说 1 2 我想将其拆分为 k 2 个子列表 现在我想要所有可能的子列表 1 2 1 2 2 1 1 2 我想分成 1 1 2 我怎样才能用 Python 3 做到这一点 更新 我的目标是获取 N 个唯一数字列表的
  • 在Python中创建一个新表

    我正在尝试从数控机床中提取数据 事件每毫秒发生一次 我需要过滤掉一些用管道 分隔的变量分隔符 PuTTy exe 程序生成的日志文件 我尝试阅读熊猫 但列不在同一位置 df pd read table data log sep 日志文件的一
  • Django 的 URL 覆盖率测试为 0%,为什么?

    使用姜戈鼻子 我对 URL 进行了测试 但 URL 覆盖率仍然为 0 为什么 python manage py 测试配置文件 这是我的报道 Name Stmts Miss Cover Missing profiles 0 0 100 pro
  • 如何使用 Pandas 将巨大的 CSV 转换为 SQLite?

    我有一个巨大的表 大约 60 GB 采用存档的 CSV 文件形式 我想将其转换为 SQLite 文件 我现在所做的事情如下 import pandas import sqlite3 cnx sqlite3 connect db sqlite
  • 一行Python和SQLite代码,为什么需要加“,”? [复制]

    这个问题在这里已经有答案了 c execute INSERT INTO numbers VALUES random randint 0 100 如果我将上面的代码更改为 c execute INSERT INTO numbers VALUE
  • 在Python中删除带有重音符号的字符串中的所有非字母字符

    我正在尝试使用 Python 3 7 从包含重音符号的字符串中删除所有非字母字符 空格除外 我尝试了以下方法 import re text 29 1981 4 2008 clean text re sub W d text print cl
  • 一起使用 Flask 和 Tornado?

    我是以下的忠实粉丝Flask 部分是因为它很简单 部分是因为它有很多扩展 http flask pocoo org extensions 然而 Flask 是为了在 WSGI 环境中使用而设计的 而 WSGI 不是非阻塞的 所以 我相信 它
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决

随机推荐

  • 快速比较两个结构的值

    我有两个结构体和两个与之对应的数组 我试图比较这两个数组值并将其打印在一个过滤数组中我确实尝试过使用过滤器 但它给了我一个错误我想比较结构体和获取一个数组 结构一 struct One let ID String let name Stri
  • 由于警告和 ValueError,无法在 Windows 的 virtualenv 中 pip 安装 PIL

    我正在尝试安装PIL在 virtualenv 中但失败了 我创建了一个全新的 virtualenv 并做了pip install PIL并得到以下结果 C Users s3z Desktop My Dropbox pythons ham g
  • 计算 iOS 中的电池寿命

    想知道除了苹果技术统计数据之外是否还有其他参考资料来计算电池寿命 我尝试比较一些现有的电池应用程序 剩余电池百分比 苹果的数据 但有时我没有得出相同的答案 另外还有使用 2G 电池 而不是 3G 的统计数据 我在 Apple 上没有看到任何
  • 如何为另一个使用 stdin 输入的函数编写测试函数?

    作为大学作业的一部分 我有以下职能 int readMenuOption local declarations char option 2 read in 1 char from stdin plus 1 char for string t
  • 播放音频并继续播放

    我正在用 C 在 unity 5 中制作一个小游戏 到目前为止 我已经成功设计了关卡并完成了一些基本的脚本编写 目前 我有一个触发器 可以生成一个对象 并希望它在用户输入后播放并播放音频源 然而 因为我希望它是一个跳跃恐慌 所以触发器非常小
  • Boost Python 1.48 在导出 32 位枚举时失败

    较新版本的 Boost Python 是否支持从 C 导出完整的 32 位枚举 我使用的是 1 48 并且能够导出最多 30 位 但当我尝试导出 32 位数字时 由于 访问冲突读取位置 0x00000001 每次都会失败 深入研究 enum
  • ValueError:值的长度与索引的长度不匹配 |熊猫 DataFrame.unique()

    我正在尝试获取新的数据集 或将当前数据集列的值更改为其唯一值 这是我想要得到的示例 A B 0 1 1 1 2 5 2 1 5 3 7 9 4 7 9 5 8 9 Wanted Result Not Wanted Result A B A
  • 为什么有些 php 文件不以右括号“?>”结尾? [复制]

    这个问题在这里已经有答案了 我一直在使用 Wordpress 和其他 CMS 我注意到一些 php 文件没有结束语 gt 当我编写自己的文件时 我必须包含 gt 否则软件崩溃 我想知道他们是如何让它工作的 或者主题的特定部分是否接受这种类型
  • 如何知道文件复制完成

    我正在使用 ReadDirectoryChangesW 来监视一个文件夹 如果我将一个大文件复制到该文件夹 我可以收到多个 FILE ACTION MODIFIED 消息 似乎每次 Windows 写入一大块文件时 您都会收到每个文件修改的
  • Microsoft.Identity.Web 和 ASP.NET Core SignalR JWT 身份验证

    我正在使用 ASP NET Core 制作一个 Web 应用程序 该应用程序还使用 SignalR Core 来提供实时功能 我使用 Azure AD B2C 进行用户管理 我已经成功使用了Microsoft Identity Web ht
  • Spring中初始化多个数据库

    我正在使用 AbstractRoutingDatasource 在运行时在数据库之间进行路由 在 informix 数据库的实际情况下 一切工作正常 为了进行测试 我创建了一个 spring 配置文件以在内存 H2 数据库中使用 使用测试配
  • 如何在运行一次后“禁用”javascript函数

    所以我有两个 html 按钮 每个按钮运行不同的功能 两个功能都在下面 基本上 您单击两个按钮之一即可将 Google 地图操作侦听器添加到地图 我已经成功地让它发挥作用了 唯一的问题是我只希望动作监听器一键可用 单击一次之后 我希望用户必
  • if/else 构造内部和外部函数

    当我查看 R 函数时 我经常发现以下结构 f lt function exp T if exp a lt 1 else a lt 2 f f F 这将运行而不会出现错误 但是执行内部函数代码会引发错误 因为 R 可能假设该语句在第一次赋值后
  • iPhone - 保存 UIImageView 状态

    我创建了 UIImageView 的子类 并且正在子类本身内部处理其对象的触摸 现在 当用户即将退出应用程序时 我想保存图像的状态 由于图像上可能发生了多次转换 我将所有转换保存在一个数组中 我希望能够将这些对象保存在 applicatio
  • 导致 TFS InvokeProcess 构建活动在其他凭据下运行

    我们使用 InvokeProcess 操作自定义了构建过程 该操作运行部署 sln 的 powershell 脚本 问题是该脚本必须在给定用户 而不是 tfsbuild 用户 下运行 我们怎样才能做到这一点 替代方案 1 创建 Invoke
  • [].append(x) 行为

    这按照我的预期执行 gt gt gt x gt gt gt x append 3 gt gt gt x 3 为什么以下返回 None gt gt gt x append 3 gt gt gt x gt gt gt because list
  • openCV 中的结果比较Hist

    我正在尝试比较我存储为数组的两个直方图 我是 C 接口 cv Mat 和 OpenCV 中计算直方图的新手 My code int testArr1 4 12 10 11 11 int testArr2 4 12 0 11 0 cv Mat
  • 在 C# 中使用 POST/httpwebrequest 上传 zip 文件

    我正在尝试代码http www paraesthesia com archive 2009 12 16 posting multipartform data using net webrequest aspx通过 httpwebreques
  • 如何在超级账本结构中获取资产修改历史记录

    我在用IBM Bluemix 区块链服务为我的资产共享演示尝试一些智能合约逻辑 无论如何 是否可以查询超级账本结构网络中的资产修改历史记录 我检查了 Fabric 0 6 和 1 0 版本的文档 但我只能找到stub pushState k
  • 是否可以从 bdist 中排除数据文件源和中间文件?

    我正在使用 setuptools 构建许多数据文件 编译的翻译 图标调整大小并转换为不同的格式等 我想将这些数据文件的来源包含在sdist和构建结果 但不是它们的源和中间文件bdist wheel 当我使用package data源文件 中