如何构建可根据目标操作系统条件引入依赖的Python包
根据目标操作系统动态添加Python包依赖的解决方案
你完全可以不用发布多个版本,利用setuptools支持的**环境标记(environment markers)**就能实现安装时根据目标系统自动选择依赖。
环境标记允许你在install_requires中为依赖添加条件,这些条件会在目标机器执行pip install时被评估,而不是打包时。
修改你的setup.py代码如下:
from setuptools import setup, find_packages setup( name="my_app", version="0.1.0", # 替换成你的实际版本号 license="BSD", author="first_name last_name", author_email="first.last@mymail.com", packages=find_packages(), install_requires=[ "redis", # 仅在Linux或macOS系统下安装redis-server "redis-server; sys_platform == 'linux' or sys_platform == 'darwin'" ], )
关键说明:
- 环境标记的语法是
依赖包名; 条件表达式,条件表达式基于Python的sys模块属性:- Windows系统对应
sys_platform值为win32 - Linux系统对应
linux - macOS系统对应
darwin
- Windows系统对应
- 这个逻辑会在用户执行
pip install my_app时触发:Windows机器只会安装redis,Linux/macOS机器会同时安装redis和redis-server。 - 无论你在哪个系统打包(比如Windows),生成的wheel或源码包都能在所有目标系统上正确识别并安装对应依赖。
内容的提问来源于stack exchange,提问作者Aenaon
相关产品推荐
相关产品推荐

