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

如何在pyproject.toml中指定Setuptools包的安装后执行脚本?

在pyproject.toml中指定setuptools安装后脚本

可以基于setuptools和pyproject.toml实现安装后自动运行Python脚本,以下是两种可行方案:

方案1:自定义安装命令类

  1. 在项目根目录创建setup_commands.py文件,编写继承自标准安装命令的自定义类,在安装完成后执行你的逻辑:
from setuptools.command.install import install

class PostInstallCommand(install):
    def run(self):
        # 先执行默认安装流程
        install.run(self)
        # 插入你的安装后脚本逻辑
        print("开始执行安装后操作...")
        # 示例:导入并运行包内的安装后处理函数
        from your_package.post_install import main
        main()
  1. 在pyproject.toml中配置tool.setuptools.cmdclass,将自定义命令绑定到安装流程:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "your-package-name"
version = "0.1.0"
# 补充你的项目元数据(作者、依赖等)

[tool.setuptools.cmdclass]
install = "setup_commands.PostInstallCommand"

方案2:利用setuptools安装钩子(配合setup.py)

如果不想自定义命令类,可通过注册钩子实现:

  1. 创建setup.py文件(仅用于注册钩子,项目元数据仍由pyproject.toml管理):
from setuptools import setup

def post_install_handler():
    print("安装完成,触发钩子操作...")
    # 执行你的安装后逻辑
    from your_package.post_install import main
    main()

setup(
    options={
        'install': {
            'post_install': post_install_handler,
        }
    }
)
  1. 确保pyproject.toml的build-system配置正确,setuptools会自动读取setup.py中的钩子配置。

注意事项

  • 安装后脚本可安全导入你的包模块(安装完成后包已可用),但不要依赖未声明的外部包
  • 开发模式安装(pip install -e .)可能不会触发自定义安装流程,需根据场景调整
  • 脚本需保证幂等性,避免重复执行导致异常

内容的提问来源于stack exchange,提问作者David Skarbrevik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:33:14