如何将Python程序转换为CLI而不必键入python3来执行?

2024-04-18 20:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

而不是打字

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

我希望能够下载git克隆,然后能够键入

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

我见过其他程序有.yaml文件,请求.txt但我找不到任何能告诉我怎么做的东西。所有的教程和指南都缺少如何使它们成为简单的命令行程序。你知道吗

我已经做了所有的argparse等,但我正在寻找一个指南或一些指导,如何dockerize它,并简单地运行它,而不必导航到dest文件夹


Tags: thenamepygit程序键入extension指南
2条回答

如果您正在考虑分发该程序,那么可能应该在包的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(从命令行调用的名称)与src/program.py的函数main相关联。你知道吗

请注意,这个名称可以是任何名称—它不一定需要与包名、python文件名等相关

您可以执行包的本地安装来测试这一点。你知道吗

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

$ Program

在终端中,来自任何目录的将执行来自src/program.pymain函数。你知道吗

如果任何人pip install通过PyPI而不是本地安装您的包,则此行为是相同的。你知道吗

将shebang添加到文件顶部:

#!/bin/python3  # or wherever your python binary is

如果你有,那么你可以:

./Program.py -<flags> arguments etc

相关问题 更多 >