问题描述
我只是想知道这是否可能。例如,假设我只想为 Linux 构建一个 pip 包,或者为 Windows 和 Mac 构建一个 pip 包但不包括 Linux,是否可以这样做?还是所有 pip 包在发布后都可用于所有 3 个平台(Windows、Mac 和 Linux)?
再举一个例子,假设 Stripe 想要发布其 Python SDK 并通过 pip 使其仅适用于 Python 用户,这可能吗?
我绝对会感谢所有答案,因为我很想知道这是否可行!我只是想知道这是否可能。感谢那些做出回应的人。
解决方法
您必须同时考虑 sdist 和 wheel 分布。
对于sdist,您无能为力,它们是多平台时期。您可以在 setup.py
中添加安全保护,以便在某些平台上运行它会失败,但这远非优雅。最佳做法是通过“trove classifiers”明确记录您的项目仅适用于特定平台,例如通过您的 long_description
和/或 README。 >
对于wheel,你可以让它只构建特定于平台的轮子,这是轮子擅长的事情之一:
但最佳实践建议您在任何情况下也发布 sdist,因此在其他平台上,安装程序将回退到 sdist。
总而言之,您可以构建特定于平台的wheels,但不能构建特定于平台的sdist。正确记录您的项目(使用 trove 分类器)以声明支持哪些平台。