gpt4 book ai didi

python - 打包python资源(Manifest.in vs package_data vs data_files)

转载 作者:行者123 更新时间:2023-12-04 12:57:41 24 4
gpt4 key购买 nike

似乎非python资源包含在python分发包中的4种方式之一:

  • Manifest.in 文件(我不确定何时优先于 package_data 或 data_files)
  • package_data in setup.py (用于在 python 导入包中包含资源)
  • 数据文件在 setup.py (用于包含 python 导入包之外的资源)
  • 叫做 setuptools-scm (我相信它使用您的版本控制系统来查找资源而不是 manifest.in 或其他东西)
  • 哪些可以从 importlib.resources 访问?
    (据我所知,importlib.resources 是访问此类资源的首选方式。)如果其中任何一个无法通过 importlib.resources 访问,那么如何/应该如何访问这些资源?
  • 网上其他人被骂建议使用__file__找到资源的路径,因为安装的轮子发行版可能存储为 zip 文件,因此甚至不会有正确的资源路径。 轮子何时提取到站点包中,何时保持压缩状态?
  • 最佳答案

    所有(1)-(3)都会将文件放入您的包中(不知道(4))。
    在运行时,importlib.resources然后将能够访问您的包中的任何数据。
    至少使用 Python 3.9,它可以访问子目录中的资源。
    以前,您必须通过添加 __init__ 使每个子目录成为一个包。 .
    至于为什么不用__file__ :Python 的导入系统有一些奇怪的方法来解析包。例如,如果您使用 Zipapp,它可以在 zip 文件中查找它们。
    您甚至可能有一个自定义加载器,用于要求您从中加载一些资源的包。
    谁知道这些资源在哪里?答:importlib.resources。
    Afaik,车轮不是竞争者,因为它们是未包装的。

    关于python - 打包python资源(Manifest.in vs package_data vs data_files),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64322707/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com