首页 > 解决方案 > 如何将 Python 程序转换为 CLI 而无需键入 python3 来执行?

问题描述

而不是打字

$ python3 Program.py -<flags> arguments, etc

我希望能够 DL git clone 然后能够输入

$ Program -<flags> arguments, etc 
# program name without the .py extension

我已经看到其他程序有 .yaml 文件、req.txt 文件并将它们 docker 化,但我找不到任何能告诉我如何做到这一点的东西。所有的教程和指南都没有说明如何使它们成为简单的命令行程序。

我已经完成了所有的 argparse 等,但我正在寻找一个指南或一些关于如何将其 dockerize 并简单地运行它而无需导航到 dest 文件夹的说明

标签: pythonpython-3.xdockercommand-line-interface

解决方案


如果您正在考虑分发程序,您可能应该在包的setup.py文件中添加 CLI 入口点。

例如:

项目结构

ROOT/
- setup.py
- src/
    - program.py

src/program.py

# program.py

def main():
    pass

setup.py

# setup.py

from setuptools import find_packages, setup

setup(
    name='my_program',
    version='1.0.0',
    packages=find_packages(),
    entry_points={
        'console_scripts': [
            'Program=src.program:main'
        ]
    }
)

重要的一点是行'Program=src.program:main':它将名称Program(从命令行调用的名称)与函数main相关联src/program.py

请注意,此名称可以是任何名称 - 它不一定需要与您的包名称、python 文件名等相关。

您可以执行包的本地安装以对此进行测试。

ROOT目录中,键入$ pip install -e .Afterwards,键入

$ Program

在终端中的任何目录都将执行main来自src/program.py.

pip install如果有人通过 PyPI 而不是您的本地安装,则此行为是相同的。


推荐阅读