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

如何使用setuptools实现Python包安装后执行脚本(替代distutils)

基于setuptools的自定义安装命令解决方案

针对原问题中需要自定义Python包安装流程的需求,这里提供完全基于setuptools的实现方案,替代已废弃的distutils写法:

from setuptools import setup
from setuptools.command.install import install as _install
import subprocess
import os

class CustomInstall(_install):
    def run(self):
        # 先执行标准安装流程,确保包文件正常安装
        super().run()
        
        # 这里添加你的自定义操作,示例:安装后运行初始化脚本
        # 替换成你需要执行的逻辑即可
        init_script = os.path.join(self.install_lib, 'your_package', 'init.py')
        if os.path.exists(init_script):
            subprocess.run(['python', init_script], check=True)

setup(
    name='your_package',
    version='1.0.0',
    packages=['your_package'],
    # 注册自定义安装命令
    cmdclass={'install': CustomInstall},
)

关键说明:

  • 直接继承setuptools.command.install.install类,而非distutils的旧版本,避免依赖废弃模块
  • 重写run方法时,必须先调用super().run()(或_install.run(self)),保证标准的安装步骤(如复制包文件、生成脚本等)正常执行
  • setuptools的install类保留了distutils中常用的路径属性,比如:
    • self.install_lib: 包文件被安装到的目标目录
    • self.install_scripts: 可执行脚本的安装目录
    • self.install_data: 数据文件的安装目录
  • 如果需要自定义命令行参数,可以重写initialize_options和finalize_options方法来处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:10:37