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

如何将Python项目配置为兼具CLI命令与可导入模块的结构

解决方案

1. 重构项目结构(消除冗余层级)

先把现有嵌套冗余的文件结构调整为更简洁的形式,避免导入时的多层级问题:

mytool-project/
├── setup.py
└── mytool/
    ├── __init__.py
    └── cli.py

2. 拆分核心功能与CLI逻辑

  • 将原mytool/mytool.py中的process_string核心函数移到mytool/__init__.py,让顶层模块直接暴露该函数:
    # mytool/__init__.py
    def process_string(input_str):
        # 这里写你的字符串处理逻辑
        return f"Processed output: {input_str}"
    
  • 将原mytool/mytool.py中的mainCLI入口函数移到mytool/cli.py,单独处理命令行参数:
    # mytool/cli.py
    import argparse
    from mytool import process_string
    
    def main():
        parser = argparse.ArgumentParser(description="Process input strings")
        parser.add_argument("string_input", help="String to be processed")
        args = parser.parse_args()
        print(process_string(args.string_input))
    
    if __name__ == "__main__":
        main()
    

3. 更新setup.py配置

调整setup.py的entry_points和包配置,确保CLI命令和导入功能都正常工作:

# setup.py
from setuptools import setup, find_packages

setup(
    name="mytool",
    version="0.1.0",
    packages=find_packages(),
    entry_points={
        "console_scripts": [
            "mytool = mytool.cli:main",  # 绑定CLI命令到cli.py的main函数
        ]
    },
    description="A string processing tool usable via CLI or Python import",
)

4. 验证功能

安装开发版包

在项目根目录执行:

pip install -e .

测试CLI命令

终端直接运行:

mytool "hello world"
# 输出:Processed output: hello world

测试导入使用

在Python脚本或交互式环境中:

import mytool
result = mytool.process_string("test import")
print(result)  # 输出:Processed output: test import

可选优化:复杂场景的结构拆分

如果后续功能扩展,可把核心逻辑放到单独的core.py文件,再在__init__.py中导入,保持顶层模块简洁:

mytool-project/
├── setup.py
└── mytool/
    ├── __init__.py
    ├── core.py
    └── cli.py
# mytool/core.py
def process_string(input_str):
    return f"Processed output: {input_str}"
# mytool/__init__.py
from .core import process_string

这种结构下导入方式不变,同时代码职责划分更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:45:47