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

如何配置Python包使其安装后将文件复制到scripts目录的子文件夹中

解决方案

原生的scripts配置项不支持直接自定义子目录结构,所有通过该参数指定的脚本都会被平级放到环境的scripts根目录下。要实现子目录存放需求,可以采用以下两种方案:

方案1:使用data_files参数指定目标路径(适配setup.py配置)

你可以通过sysconfig模块获取当前Python环境的scripts目录路径,再用data_files参数按你需要的目录结构配置文件映射:

import sysconfig
from setuptools import setup

# 获取当前环境的scripts目录绝对路径
env_scripts_dir = sysconfig.get_path("scripts")

setup(
    # 其他配置项省略
    data_files=[
        # 第一项为目标路径,第二项为对应要复制的源文件列表
        (f"{env_scripts_dir}/odd_scripts", ["bin/script1.bat"]),
        (f"{env_scripts_dir}/even_scripts", ["bin/script2.bat"]),
    ]
)

安装完成后,脚本就会按照你指定的结构存放到scripts的对应子目录下。

方案2:自定义构建钩子(适配pyproject.toml配置)

如果你已经迁移到了pyproject.toml作为配置文件,可以添加自定义构建后执行的钩子脚本,在包安装完成后自动创建对应的子目录,再将脚本复制到目标位置。


注意事项

  • 如果你希望子目录中的脚本可以直接在命令行调用,需要手动将对应的子目录路径添加到系统的PATH环境变量中,否则只能通过全路径访问脚本。
  • 上述data_files方案在可编辑安装(pip install -e)场景下不会生效,如果你需要支持可编辑安装,可以自定义setuptools的install命令子类,额外增加文件复制逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:27:03