如何在pyproject.toml中配置tzdata跨平台最低版本依赖?
解决tzdata跨源版本号的依赖设置问题
在pyproject.toml中不能直接用|来写“或”条件,因为不符合PEP 508的依赖语法规范。针对conda-forge和PyPI上tzdata版本号格式不同的情况,有两种可行的解决方式:
方式一:用conda专属环境标记区分
这是最精准的方式,利用conda环境特有的name == 'conda'标记来分别指定依赖:
dependencies = [ # conda/conda-forge环境下要求版本≥2022a "tzdata>=2022a; name == 'conda'", # pip/PyPI环境下要求版本≥2022.1 "tzdata>=2022.1; name != 'conda'" ]
方式二:通过环境变量判断
如果担心环境标记的兼容性,也可以通过conda的环境变量CONDA_PREFIX来区分环境:
dependencies = [ "tzdata>=2022a; env.get('CONDA_PREFIX') is not None", "tzdata>=2022.1; env.get('CONDA_PREFIX') is None" ]
说明
- pip无法识别
2022a这类字母后缀的版本号,所以必须把两种环境的依赖分开,避免解析报错; - 上述写法会让conda安装时匹配conda-forge的版本规则,pip安装时匹配PyPI的版本规则,均满足“至少2022a/2022.1”的要求。
内容的提问来源于stack exchange,提问作者ignoring_gravity
相关产品推荐
相关产品推荐

