首页 > 解决方案 > 创建仅包含数据文件的 Python 包?

问题描述

我正在尝试打包具有大量(~100M压缩)数据文件的东西。因为这 a) 超出了 PyPI 的限制,并且 b) 将在每个平台上重复(我已经编译了 C++ 代码),这冒犯了我的整洁感,我想将数据文件拆分到与代码不同的包中。

鉴于数据文件需要与代码 (nb zip_safe=False) 位于同一目录中,有什么方法可以工作,还是我注定要编写逻辑来在安装时获取文件?

注意:我尝试过创建一个没有 Python 代码的轮子,但由于没有setup.py在完全独立的构建树中编写完全独立的运行,我无法使用 setuptools 来排除.py.so文件。(packages=[]似乎实际上什么都不做。)

我的“构建树”看起来像:

  setup.py
  dist/
    ...wheels will be written here...
  foo/
    __init__.py
    all.py
    bar/
      __init__.py
      something.cpython.so
      data/
        ...files I want in the wheel...

自然,我glob使用package_data. 确切的调用类似于:

setup(...
      packages=[],
      include_package_data=True,
      package_data={
          '': [f'../{f}' for f in glob(...)]
      })

标签: pythonsetuptools

解决方案


推荐阅读