如何在 pyproject.toml 文件中配置操作系统特定的依赖项 [Maturin]

San*_*thi 4 python pypi rust pyo3

我有一个使用 Maturin 构建的 Rust 和 Python 项目(https://github.com/PyO3/maturin)。它说它需要一个pyproject.tomlpython 依赖项的文件。

我有一个依赖项uvloop,Windows 和 Arm 设备不支持该依赖项。我添加了有条件导入这些包的代码。但是,我不知道如何有条件地安装这些软件包。现在,这些软件包默认安装在每个操作系统上。

这是 pyproject.toml 文件。

[project]
name = "robyn"
dependencies = [
  "watchdog>=2.1.3,<3",
  "uvloop>=0.16.0,<0.16.1",
  "multiprocess>=0.70.12.2,<0.70.12.3"
]

Run Code Online (Sandbox Code Playgroud)

github链接,jic任何人都感兴趣:https://github.com/sansyrox/robyn/pull/94/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R21

wim*_*wim 9

环境标记的语法在PEP 508 \xe2\x80\x93 Python 软件包依赖关系规范中指定。下面我将展示如何uvloop使用标记排除 Windows 平台的依赖项platform.system()使用返回

\n
    \n
  • Linux 上的“Linux”
  • \n
  • macOS 上的“达尔文”
  • \n
  • Windows 上的“Windows”
  • \n
\n

使用pyproject.toml

\n
[project]\ndependencies = [\n    \'uvloop ; platform_system != "Windows"\',\n]\n
Run Code Online (Sandbox Code Playgroud)\n

使用setup.cfg

\n
[options]\ninstall_requires =\n    uvloop ; platform_system != "Windows"\n
Run Code Online (Sandbox Code Playgroud)\n

使用setup.py

\n
[options]\ninstall_requires =\n    uvloop ; platform_system != "Windows"\n
Run Code Online (Sandbox Code Playgroud)\n