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

如何将基于setuptools的Python包做成可直接调用的命令行工具

实现Python包的终端命令行工具(类似awscli)

1. 编写命令行入口函数

在你的Python包中创建一个处理命令行逻辑的模块(比如cli.py),定义一个作为入口的主函数,示例如下:

# my_package/cli.py
def main():
    # 这里编写你的命令行逻辑,比如处理参数、执行业务操作
    print("我的命令行工具已运行!")

if __name__ == "__main__":
    main()

2. 配置setuptools的入口点

通过配置让setuptools为你的包生成终端可执行命令,分两种配置方式:

方式一:使用setup.py

在setup.py中添加entry_points字段,指定控制台脚本的命令名和对应入口函数:

from setuptools import setup

setup(
    name="my_package",
    version="0.1.0",
    packages=["my_package"],
    entry_points={
        "console_scripts": [
            "mycmd = my_package.cli:main",  # mycmd是你要在终端用的命令
        ],
    },
)

方式二:使用pyproject.toml(推荐)

如果采用现代Python包配置标准,在pyproject.toml中添加脚本配置:

[project.scripts]
mycmd = "my_package.cli:main"

3. 重新安装包

用pip安装你的包,开发阶段推荐使用可编辑模式(修改代码后无需重新安装即可生效):

pip install -e .

4. 测试命令

安装完成后,直接在终端输入你配置的命令即可运行:

mycmd

此时终端会执行你在cli.py中定义的main()函数逻辑。

额外优化建议

  • 若需处理复杂命令(如多级子命令、参数解析),可以使用click、typer或argparse库增强命令行交互能力,比如awscli的多级命令体系就基于类似工具实现。
  • 确保将依赖库(如click)添加到包的依赖声明中,比如在setup.py的install_requires或pyproject.toml的dependencies里配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:45:48