【问题标题】:How to best distribute python packages with _large_ data dependencies如何最好地分发具有 _large_ 数据依赖关系的 python 包
【发布时间】:2012-03-31 03:59:09
【问题描述】:

我正在开发一个新的 Python 包,它依赖于许多相当大的(每个 >20Mb)数据文件。具体来说,库希望数据文件在运行时位于data/ 目录中。

目前,我将它们作为分发包的一部分放在“数据”目录中,并将我的 setup.py 脚本配置为通过python setup.py install 在用户系统上安装这些文件。这目前有效,但似乎它会阻止我将分发上传到 PyPI,因为 tarball 可能会超过 几百 Mb。

作为替代方案,我想将文件“托管”在远程站点上,以便对 PyPI 友好,并自动检索和安装文件。这可能使用现有的 Python 分发技术吗?如果是这样,您能否描述如何做到这一点或提供一个例子?如果不可能,实现这一目标的最佳做法是什么?

欢迎您提供任何见解。

【问题讨论】:

  • 近 10 年后我现在正在研究同样的问题。这是使用分发工具或一些标准做法解决的吗?我也可以将文件托管在某个远程站点,但我也希望在将包上传到索引时共同解决这个问题。

标签: python distribution pypi


【解决方案1】:

NLTK在他们的语料数据分布上也有类似的情况。在我的 linux 发行版中,数据位于单独的包中,因此我通过在 Windows 上使用 setuptools 安装它进行了一些调查。

如果您尝试使用语料库但没有它,nltk 会要求您运行下载器功能 (nltk.download())。在内部,它使用LazyCorpusLoader 作为需要数据的语料库对象的替代,然后在需要时加载数据。

sys.path 一样,它会预先搜索多个路径,以便用户可以将其放在任何他们想要的位置。您也可以修改nltk.data.path,为数据添加您自己的位置。

【讨论】:

  • 谢谢,这是一个有趣的选择。我想我可以简单地编写一个名为 get_data.py 的小脚本,假设该模块已经安装,它将查询 module.__file__ 并根据返回的路径将数据文件放在适当的位置。
  • 假设运行它的用户对目录有写权限。
  • 谢谢。坦率地说,我很惊讶可以简单地将 setup.py 中的 package_data 要求指向一个 URL 列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 2010-10-05
  • 2022-01-21
  • 2023-04-06
  • 2012-04-10
  • 1970-01-01
相关资源
最近更新 更多