distutils.util.get_platform() 的替代品是什么?

Mat*_*hew 6 python distutils setuptools python-3.x

显然,Python 3.10 / 3.12 将弃用/删除 distutils ( cpython/issues/92584 )。

\n

不幸的是,我无法找到一个替代品来替代我正在使用的唯一功能;distutils.util.get_platform()。这个的替代品是什么?

\n

请注意,platform不是答案。我需要一个函数返回构建二进制wheel\xc2\xb9 时使用的完整字符串,例如。请特别注意,其中似乎嵌入了特定于平台的逻辑(例如,我知道获取 macos 版本的唯一其他方法是使用特定于 macos 的 API)。macosx-12-x86_64

\n

(\xc2\xb9 正如评论中所指出的,distutils.util.get_platform()严格来说,不是那个函数。但是,PEP 425指定“平台标记只是distutils.util.get_platform()将所有连字符-和句点.替换为下划线_。”因此,它是直接的,并且与平台无关的从 派生标签distutils.util.get_platform()。因此,可接受的答案可能会提供经过批准的公共 API,它直接生成平台标签,或者是 的兼容替代品distutils.util.get_platform()。)

\n

wim*_*wim 9

对于您的用例,sysconfig有替代品

import sysconfig
sysconfig.get_platform()
Run Code Online (Sandbox Code Playgroud)

这是 Wheel 项目本身在Replaced all use ofdistutils.util.get_platform() distutils with setuptools #428 中从代码中删除 distutils 时所使用的替代品。

  • @Matthew 在幕后,``sysconfig.get_platform`` 和``distutils.util.get_host_platform`` 的代码 99% 相同。对于 Windows,distutils 还会检查 ``os.environ.get('VSCMD_ARG_TGT_ARCH')``。因此严格来说,目前不能保证给出完全相同的结果,但它是退而求其次的。 (2认同)
  • 这个 PEP 已经有近 10 年历史了,所以如果自那时以来情况发生了一些变化并且需要更新,也就不足为奇了。 (2认同)