构建它时如何强制python wheel特定于平台?

发布于 2021-01-29 19:16:36

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

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

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

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

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是我通常从uwsgi查看的代码

    基本方法是:

    setup.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钻头告诉车轮机械制造一个非纯正pyX-none- any车轮。您还可以得到票友说有 二进制
    平台相关的组件,但没有 CPython的ABI 特定组件。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看