首页 > 解决方案 > 如何处理上传到 PyPI 的“平台特定动态库”问题?

问题描述

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

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

标签: pythonpypidynamic-librarybinarieslanguage-interoperability

解决方案


这就是构建发行版的兼容性标签的用途。

例如,考虑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

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


推荐阅读