如何处理上传到PyPI的"platform specific dynamic library"问题?

How to deal with the "platform specific dynamic library" problem with uploading to PyPI?

我有一个依赖于二进制文件的 Python 包。我已经构建了 linux 版本,它在 PyPI 上可用。关键是设置 package_data 参数以确保 *.so 文件也上传到 PyPI。

现在我想用 Windows 做同样的事情,这显然需要 *.dll 依赖项,而不是 *.so。将我的包上传到 PyPI 时,当用户在 linux 平台上下载我的包时是否可以上传 *.so 文件,当用户在 windows 平台上下载我的包时是否可以上传 *.dll 文件].我预见的问题是,如果我必须为所有平台上传所有二进制文件,我的包将很快超过 PyPI 的大小限制。

这就是 compatibility tags for built distributions 的用途。

例如,考虑 https://pypi.org/project/numpy/#files。它发布了以下轮子:

  • numpy-1.18.5-cp38-cp38-macosx_10_9_x86_64.whl
  • numpy-1.18.5-cp38-cp38-manylinux1_i686.whl
  • numpy-1.18.5-cp38-cp38-manylinux1_x86_64.whl
  • numpy-1.18.5-cp38-cp38-win32.whl
  • numpy-1.18.5-cp38-cp38-win_amd64.whl

其中每一个都包含给定平台的特定于平台的依赖项。