Python命令行脚本中'script'与'entry_point'的优缺点

20 投票
1 回答
4458 浏览
提问于 2025-04-18 04:28

Python的setuptools有两种方法可以把命令行脚本添加到Python包里:scriptentry_point

这个教程详细介绍了这两种方法:

scripts

首先,把一个Python脚本(比如叫funniest-joke)放到包的目录里,然后在setup.py文件中添加这个脚本的路径:

setup(
    ...
    scripts=['bin/funniest-joke'],
    ...
)

入口点:

同样,把一个Python脚本(比如叫funniest-joke)放到包的目录里。然后在这个脚本里添加一个main()函数,并且再添加一个叫command_line.py的子模块,用来运行funniestmain()函数:

command_line.py

import funniest

def main():
    print funniest.joke()

setup.py

setup(
    ...
    entry_points = {
        'console_scripts': ['funniest-joke=funniest.command_line:main'],
    }
    ...
)

这两种方法各有什么优缺点呢?

1 个回答

7

简单来说,脚本是以前的一种方式,它需要你有一个独立的、可以执行的脚本文件。而入口点方法则让你可以定义在用户输入命令时想要运行哪些函数。这样,你可以在同一个文件或模块里放多个函数,然后设置“入口点”,当用户输入某个console_scripts命令时,就会调用这些入口点。

虽然setup()支持一个叫做scripts的关键词,用来指向预先制作好的脚本进行安装,但为了实现跨平台兼容,推荐的做法是使用console_scripts入口点(见下文)。

来源于 https://packaging.python.org/tutorials/distributing-packages/#scripts旧版来源

撰写回答