gpt4 book ai didi

python - 构建时如何强制 python 轮子特定于平台?

转载 作者:行者123 更新时间:2023-11-28 18:56:08 26 4
gpt4 key购买 nike

我正在开发一个 python2 包,其中 setup.py包含一些自定义安装命令。这些命令实际上构建了一些 Rust 代码并输出了一些 .dylib移入 python 包的文件。

重要的一点是 Rust 代码在 python 包之外。

setuptools应该自动检测 python 包是纯 python 还是特定于平台的(例如,如果它包含一些 C 扩展)。就我而言,当我运行 python setup.py bdist_wheel ,生成的轮子被标记为纯 python 轮子:<package_name>-<version>-py2-none-any.whl .这是有问题的,因为我需要在不同的平台上运行这段代码,因此我需要为每个平台生成一个轮子。

有没有办法在构建轮子时强制构建特定于平台?

最佳答案

这是我通常从uwsgi 看的代码

基本方法是:

设置.py

# ...

try:
from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
class bdist_wheel(_bdist_wheel):
def finalize_options(self):
_bdist_wheel.finalize_options(self)
self.root_is_pure = False
except ImportError:
bdist_wheel = None

setup(
# ...
cmdclass={'bdist_wheel': bdist_wheel},
)

root_is_pure 位告诉轮子机器构建一个非 purelib (pyX-none-any) 轮子。您还可以获得fancier通过说有 binary 特定于平台的组件,但没有 cpython abi 特定的组件。

关于python - 构建时如何强制 python 轮子特定于平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58786267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com