You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在pyproject.toml中指定平台相关的包数据?

针对不同平台配置setuptools包数据的方法

当然可以针对不同平台分别指定包数据,这里提供两种实用的实现方式:

方法一:利用pyproject.toml的平台专属配置

setuptools支持通过platform:前缀为不同平台单独配置包数据,直接在pyproject.toml中添加对应平台的配置块即可:

# 通用包数据,所有平台都会包含
[tool.setuptools.package-data]
"somemodule.somepackage" = ["common-data.ext"]

# Windows专属包数据
[tool.setuptools.package-data.platform:win32]
"somemodule.somepackage" = ["somedataforwindowsonly.ext"]

# Linux专属包数据
[tool.setuptools.package-data.platform:linux]
"somemodule.somepackage" = ["somedataforlinuxonly.ext"]
  • 常用平台标识:win32对应Windows,linux对应Linux,darwin对应macOS,freebsd对应FreeBSD
  • 平台专属配置会和通用配置合并,最终该包的数据集是两者的并集

方法二:通过代码动态配置(兼容旧项目)

如果需要更复杂的平台判断逻辑,可以在setup.py中通过代码实现,动态生成package_data:

import sys
from setuptools import setup

# 初始化通用包数据
package_data = {
    "somemodule.somepackage": ["common-data.ext"]
}

# 根据平台添加专属数据
if sys.platform.startswith("win"):
    package_data["somemodule.somepackage"].append("somedataforwindowsonly.ext")
elif sys.platform.startswith("linux"):
    package_data["somemodule.somepackage"].append("somedataforlinuxonly.ext")

setup(
    # 项目基础配置(名称、版本等)
    name="your-project-name",
    version="0.1.0",
    packages=["somemodule.somepackage"],
    package_data=package_data
)

注意:如果同时存在pyproject.toml和setup.py的配置,两者会自动合并,且pyproject.toml的配置优先级更高。

内容的提问来源于stack exchange,提问作者Vince W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:55:58