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

构建自定义.whl文件时,如何向setup.py传递参数?

解决方案

下面是几种更优雅的实现方式,替代文件读写传递版本参数:

方法1:通过环境变量传递版本号

在调用构建命令前设置环境变量,再在setup.py中读取该变量:

  • 构建脚本中的调用逻辑(Linux/macOS):

    import os
    version = "1.0.9"
    os.system(f'export LIB_VERSION={version} && python ./LoggerLib/setup.py bdist_wheel')
    

    Windows环境下替换为:

    import os
    version = "1.0.9"
    os.system(f'set LIB_VERSION={version} && python ./LoggerLib/setup.py bdist_wheel')
    
  • setup.py中获取版本:

    from setuptools import setup
    import os
    
    setup(
        name="LoggerLib",
        version=os.environ.get("LIB_VERSION", "0.0.1"),  # 第二个参数为默认版本
        # 其他配置项...
    )
    

方法2:自定义命令行参数(提前过滤)

在setup.py中先识别自定义的版本参数,移除后再交给setuptools处理,避免被识别为无效命令:

  • 修改setup.py:

    from setuptools import setup
    import sys
    
    # 默认版本号
    lib_version = "0.0.1"
    
    # 识别并提取自定义版本参数
    if "--lib-version" in sys.argv:
        arg_index = sys.argv.index("--lib-version")
        if arg_index + 1 < len(sys.argv):
            lib_version = sys.argv[arg_index + 1]
            # 移除自定义参数,防止setuptools报错
            del sys.argv[arg_index:arg_index + 2]
    
    setup(
        name="LoggerLib",
        version=lib_version,
        # 其他配置项...
    )
    
  • 执行构建命令:

    python ./LoggerLib/setup.py bdist_wheel --lib-version 1.0.9
    

方法3:动态修改配置文件(setup.cfg)

如果你的项目使用setup.cfg管理配置(推荐方式),可以先动态替换版本号再执行构建:

  • 先在setup.cfg中设置版本占位符:

    [metadata]
    name = LoggerLib
    version = __VERSION__
    # 其他配置...
    
  • 构建脚本中替换版本并执行:

    import os
    from pathlib import Path
    
    version = "1.0.9"
    cfg_path = Path("./LoggerLib/setup.cfg")
    
    # 读取并替换版本号
    with open(cfg_path, "r") as f:
        cfg_content = f.read().replace("__VERSION__", version)
    with open(cfg_path, "w") as f:
        f.write(cfg_content)
    
    # 执行构建
    os.system("python ./LoggerLib/setup.py bdist_wheel")
    

内容的提问来源于stack exchange,提问作者Paweł Pietraszko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:10:27