使用setuptools,如何在安装时下载外部数据?

2023-11-24

我想创建一些非常易于使用的 pip 包,用于在 Python 中加载常见的机器学习数据集。 (是的,有些东西已经存在,但我希望它更简单。)

我想要实现的是:

  • 用户运行pip install dataset
  • pip 下载数据集,例如通过wget http://mydata.com/data.tar.gz。请注意,数据并不驻留在 python 包本身中,而是从其他地方下载的。
  • pip 从此文件中提取数据并将其放入包安装的目录中。(这并不理想,但数据集非常小,所以我们假设在这里存储数据没什么大不了的。)
  • 稍后,当用户导入我的模块时,模块会自动从特定位置加载数据。

这个问题是关于项目符号 2 和 3 的。有没有办法用 setuptools 来做到这一点?


正如 Kevin 提到的,Python 包安装应该是完全可重现的,任何潜在的外部下载问题都应该被推送到运行时。因此,不应使用 setuptools 来处理此问题。

相反,为了避免给用户带来负担,请考虑在加载时以惰性方式下载数据。例子:

def download_data(url='http://...'):
    # Download; extract data to disk.
    # Raise an exception if the link is bad, or we can't connect, etc.

def load_data():
    if not os.path.exists(DATA_DIR):
        download_data()
    data = read_data_from_disk(DATA_DIR)
    return data

然后我们可以描述download_data在文档中,但大多数用户永远不需要费心。这有点类似于imageio模块在运行时下载必要的解码器,而不是让用户自己管理外部下载。

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

使用setuptools,如何在安装时下载外部数据? 的相关文章

  • 将 Poetry 与 PyEnv 一起使用并遇到 Python 版本问题

    我正在使用 WSL2 Ubuntu 我一直在学习使用 Fastapi 进行后端 API 开发的课程 我相信我的 Ubuntu 默认 python 是 3 8 我正在尝试使用 python 3 10 0 进行开发 我做了以下事情 pyenv安
  • 在Python中不断寻找用户输入

    我将如何编写一个始终寻找用户输入的 Python 程序 我想我希望有一个等于输入的变量 然后根据该变量的等于值会发生不同的情况 因此 如果变量是 w 那么它将执行某个命令并继续执行 直到收到另一个输入 例如 d 然后会发生不同的情况 但直到
  • Django 说“id 可能不为 NULL”,但为什么会这样呢?

    我今天要疯了 我只是尝试插入一条新记录 但它返回了 post blogpost id 可能不为 NULL 错误 这是我的模型 class BlogPost models Model title models CharField max le
  • 监控培训课程如何运作?

    我试图理解使用之间的区别tf Session and tf train MonitoredTrainingSession 以及我可能更喜欢其中之一 似乎当我使用后者时 我可以避免许多 杂务 例如初始化变量 启动队列运行程序或设置文件编写器以
  • Python 在 64 位 vista 上获取 os.environ["ProgramFiles"] 的错误值

    Vista64 计算机上的 Python 2 4 3 环境中有以下2个变量 ProgramFiles C Program Files ProgramFiles x86 C Program Files x86 但是当我运行以下命令时 impo
  • Python 可选参数对

    我正在使用argparse模块获取两个可选的命令行参数 parser add argument start date nargs metavar START DATE help start date in YYYY MM DD parser
  • Python:绘制甘特图的模块

    有没有一个好的Python绘图模块甘特图 http en wikipedia org wiki Gantt chart 我试过了开罗情节 http linil wordpress com 2008 09 16 cairoplot 11 但它
  • 在 Qt 5 中嵌入 Python

    我想将 Python 解释器嵌入到 Qt 5 应用程序中 我在 Qt 5 中有一个工作应用程序 但是当我把 include
  • Python Tkinter 网格复选框

    我想知道是否有一种简单的方法可以使用 Tkinter 创建复选框网格 我正在尝试制作一个由 10 行和 10 列 即 100 个复选框 组成的网格 以便每行只能选择两个复选框 编辑 我正在使用带有spyder的python 2 7 到目前为
  • 如何删除 pip 安装的所有软件包?

    如何从当前激活的虚拟环境中卸载 pip 安装的所有软件包 我发现这个片段作为替代解决方案 与重新创建 virtualenv 相比 删除库更加优雅 pip freeze xargs pip uninstall y 如果您通过 VCS 安装了软
  • 使用 conda 安装额外功能

    With pip我们可以使用方括号安装子包 例如与阿帕奇气流 https pythonhosted org airflow installation html pip install airflow all 有类似的东西吗conda或者我必
  • Pandas 中的数据透视表小计

    我有以下数据 Employee Account Currency Amount Location Test 2 Basic USD 3000 Airport Test 2 Net USD 2000 Airport Test 1 Basic
  • 向结构化 numpy 数组添加字段

    将字段添加到结构化 numpy 数组的最简洁方法是什么 是否可以破坏性地完成 或者是否有必要创建一个新数组并复制现有字段 每个字段的内容是否连续存储在内存中 以便可以有效地完成此类复制 如果您使用 numpy 1 3 还有 numpy li
  • Django:显示管理员验证错误的自定义错误消息

    我正在使用 Django 1 2 4 我有一个模型 其中有一个需要验证的字段 当验证失败时 我想向用户显示自定义错误消息 模型编辑是在管理界面中完成的 这就是我目前正在做的事情 def clean fields self exclude N
  • Django 按小时过滤

    我找到了那个链接 http code djangoproject com attachment ticket 8424 time filters diff http code djangoproject com attachment tic
  • scikit-learn kmeans 聚类的初始质心

    如果我已经有一个可以作为初始质心的 numpy 数组 我该如何正确初始化 kmeans 算法 我正在使用 scikit learn Kmeans 类 这个帖子 具有选定初始中心的 k 均值 https stackoverflow com q
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 如何通过 Selenium 内部的文本查找按钮(Python)?

    我有以下三个按钮 我不知道如何获取其中的文本 例如异常值 我试过browser find element by link text Outliers click 但出现 无法找到元素 错误 我该怎么做 See find element by
  • 如何对每一行进行 value_counts 并创建一些列,其值是每个值的计数

    我得到一个数据框如下 df c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 r1 0 1 1 1 1 0 0 0 0 0 0 0 r2 1 2 2 2 2 1 1 1 1 0 0 0 r3 1 0 2 0 0
  • 如何从Python枚举类中获取所有值?

    我正在使用 Enum4 库创建一个枚举类 如下所示 class Color Enum RED 1 BLUE 2 我要打印 1 2 作为某处的列表 我怎样才能实现这个目标 您可以执行以下操作 e value for e in Color

随机推荐

  • PowerShell函数不会返回DataTable

    我在 PowerShell v4 0 Windows 7 x64 SP1 上有一个 PowerShell 脚本 它创建了一个非常复杂的数据表 我希望能够轻松地将 DataTable 代码放置在任何地方 因此我决定将其包装在一个简单的函数中
  • 数组通过 ajax post 被截断。 Ajax 发帖限制?

    我有一个多维数组 它由 426 个较小的数组组成 还包含 4 个属性 下面是 426 个数组之一的示例 array Main array 0 gt array 1 of 426 arrays name gt Danny email gt e
  • twitter-bootstrap 关闭警报不起作用

    我无法让它工作 当我单击关闭按钮时 什么也没有发生 这是代码 div class alert alert error alert block style width 200px div
  • 如何从另一个日期选择器中设置日期选择器中的最小日期?

    我目前正在向我的日期选择器添加验证 并且在设置最短日期时遇到问题to日期选择器是在中选择的任何内容from日期选择器 即 如果选择 12 3 15 则日期选择器中的最小日期为 12 3 15 这是我正在使用的代码 from datepick
  • 有时间限制的计算

    我正在尝试编写一个构造 它允许我在给定的时间窗口内运行计算 就像是 def expensiveComputation Double some intensive math val result Option Double timeLimit
  • 通过赋值运算符插入到 std::vector 的索引处

    我是 C 新手 很好奇这是否是插入 std vector 的首选方式 std vector
  • 在 OSX 上静态链接 gfortran 库的正确方法

    我有一个要分发的 Fortran 程序 因此我想静态链接到 gfortran 库 如果我使用以下标志编译程序 gfortran o myprog static libgfortran static libgcc myprog f otool
  • 将向量分割成块,使得每个块的总和近似恒定

    我有一个包含超过 100 000 条记录的大型数据框 其中的值已排序 例如 考虑以下虚拟数据集 df lt data frame values c 1 1 2 2 3 4 5 6 6 7 我想创建 3 组上述值 仅按顺序 以便每组的总和或多
  • 使用 WebDAV 访问 Exchange 2003 收件箱

    你怎么 使用 NET 使用 WebDAV 获取用户收件箱 不是您自己的收件箱 中的电子邮件列表 然后获取每封电子邮件的属性和 或内容 我想这样做而不WebDAV NET 如果可能的话 看看我的这篇关于 webdav 的帖子 希望它能给你一些
  • 实体框架循环引用

    再次尝试这个问题 因为我的第一次尝试几乎没有连贯性 p 所以我非常困惑并使用 Entity Framework Code First 我有一个森林课 我有一个树类 每个森林可以有很多树 当我尝试序列化时 我得到了循环引用 public cl
  • 将数组传递给构造函数而不声明它?

    在处理中 我定义了以下类 class SomeClass SomeClass int someArray println someArray 现在我想创建该类的实例 但在将数组传递给构造函数时遇到问题 SomeClass myVar new
  • 每 5 分钟运行一次 PHP 脚本并避免竞争条件

    我有一个 php 脚本 需要每 5 分钟运行一次 目前我正在使用 cron 作业来运行它 并且效果很好 但我的主机只允许最短时间 15 分钟 所以我的问题是 我可以使用访问者每5分钟触发一次php脚本的运行吗 我可以轻松地记录它上次运行的时
  • Swift:带有中心圆形按钮的自定义 TabBar

    I try to create custom tabbar like the below picture Below is the result i get 下面是我当前的代码 class CustomTabBarController UI
  • 如何使用 objdump 反汇编单个函数?

    我的系统上安装了一个二进制文件 并且想查看给定函数的反汇编 最好使用objdump 但其他解决方案也是可以接受的 From 这个问题我了解到 如果我只知道边界地址 我也许能够反汇编部分代码 从这个答案我已经学会了如何将分割的调试符号转回单个
  • 如何在 iOS 中渲染拉伸文本?

    给定一个矩形区域 我想使用特定字体渲染一些文本并获取渲染的文本填写矩形 如下图所示 这与仅更改字体大小不同 将其渲染为位图然后缩放它不是一个选项 它看起来很糟糕 矢量图形就是做到这一点的方法 Solution 我想出了以下似乎对我的目的有用
  • 从 android 加密并在 CryptoJS 中解密

    我对 AES 加密和解密非常陌生 在我的应用程序中 我必须解密从服务器获得的数据 我收到的数据是使用 CryptoJS 库加密的 解密效果非常好 但是 在将数据发布到服务器时 我必须再次加密数据并将其发送到服务器 这没有提供适当的加密 我已
  • 如何在远程计算机上执行命令?

    我在服务器中有一个共享文件夹 我需要对某些文件远程执行命令 我怎么做 服务器上需要运行哪些服务才能正常工作 一些细节 只能使用 C 服务器上不能安装任何东西 另一种解决方案是使用WMI NET 或 Windows 管理规范 使用 NET F
  • Swift:标签文本-->“致命错误:在解包可选值时意外发现 nil”

    就像标题中所说的那样 我试图通过单击按钮来更改标签文本 错误出现在行self playerChoice text You Rock import UIKit class ViewController UIViewController var
  • 在 Mathematica 中读取 UTF-8 编码的文本文件

    我怎样才能读到utf 8编码Mathematica 中的文本文件 这就是我现在正在做的事情 text Import charData txt Text CharacterEncoding gt UTF8 但它告诉我 CharacterEnc
  • 使用setuptools,如何在安装时下载外部数据?

    我想创建一些非常易于使用的 pip 包 用于在 Python 中加载常见的机器学习数据集 是的 有些东西已经存在 但我希望它更简单 我想要实现的是 用户运行pip install dataset pip 下载数据集 例如通过wget htt