如何处理上传到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
其中每一个都包含给定平台的特定于平台的依赖项。
我有一个依赖于二进制文件的 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
其中每一个都包含给定平台的特定于平台的依赖项。