如何基于目标操作系统构建Wheel并安装对应版本的Python依赖包?
解决方案
你的问题核心在于依赖包的选择逻辑在构建阶段就被固定了——platform.system()是在你生成wheel文件的机器上执行的,导致最终wheel里的依赖是单一固定的,无法适配用户实际安装时的操作系统。
要解决这个问题,需要使用PEP 508定义的环境标记(Environment Markers),把依赖选择逻辑延迟到安装阶段执行,让pip根据用户的操作系统自动匹配对应包。
修改后的setup.py代码如下:
from setuptools import find_packages, setup setup( ... install_requires=[ "glob2>=0.7", "numpy>=1.26.4", # macOS系统安装polars-lts-cpu,其他系统安装polars "polars-lts-cpu>=1.12.0; sys_platform == 'darwin'", "polars>=1.12.0; sys_platform != 'darwin'" ] ... )
关键说明:
sys_platform是PEP 508标准的环境变量,对应Python的sys.platform:macOS系统返回darwin,Linux返回linux,Windows返回win32。- 这种写法会让pip在安装时,根据当前运行的操作系统自动选择对应的Polars包,完全不受构建wheel时的系统限制。
内容的提问来源于stack exchange,提问作者FiReTiTi
相关产品推荐
相关产品推荐

