我正在使用其中setup.py包含一些自定义安装命令的python2软件包。这些命令实际上构建了一些Rust代码,并输出了一些.dylib移入python包的文件。
setup.py
.dylib
重要的一点是,Rust代码在python包之外。
setuptools应该自动检测python软件包是纯python还是平台特定的(例如,如果它包含某些C扩展名)。就我而言,当我跑步时pythonsetup.py bdist_wheel,生成的车轮被标记为纯python车轮:<package_name>-<version>-py2-none-any.whl。这是有问题的,因为我需要在不同的平台上运行此代码,因此需要在每个平台上生成一个轮子。
setuptools
pythonsetup.py bdist_wheel
<package_name>-<version>-py2-none-any.whl
有没有办法在构建轮子时强制构建特定于平台?
这是我通常从uwsgi查看的代码
基本方法是:
# ... 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 特定组件。
root_is_pure
pyX-none- any