Python命令行脚本中'script'与'ent​​ry_point'的优缺点

Ada*_*tan 17 python scripting setuptools setup.py

Python的setuptool有两种方法可以将命令行脚本添加到Python包中:script和entry_point.

本教程概述了以下方法:

scripts

将Python脚本(funniest-joke)添加到包树,并将其路径添加到setup.py:

setup(
    ...
    scripts=['bin/funniest-joke'],
    ...
)
Run Code Online (Sandbox Code Playgroud)

入口点:

将Python脚本(funniest-joke)添加到包树.添加一个main()函数,并添加command_line.py运行最有趣的子模块main():

command_line.py:

import funniest

def main():
    print funniest.joke()
Run Code Online (Sandbox Code Playgroud)

setup.py

setup(
    ...
    entry_points = {
        'console_scripts': ['funniest-joke=funniest.command_line:main'],
    }
    ...
)
Run Code Online (Sandbox Code Playgroud)

每种方法有哪些优缺点?

小智 6

我不知道为什么在寻找未回答的问题时,SO给我看这个老问题作为最佳结果......但是因为他们确实...这里是文档的答案.

基本上脚本是旧方法,它要求您拥有独立的可执行脚本文件,并且入口点方法允许您定义在给出命令时要运行的功能.这样,您可以在同一文件/模块中拥有多个函数,然后具有"入口点",当用户键入其中一个console_scripts命令时,将会调用这些入口点.

尽管setup()支持用于指向要安装的预制脚本的scripts关键字,但实现跨平台兼容性的推荐方法是使用console_scripts入口点(参见下文).

来自https://packaging.python.org/tutorials/distributing-packages/#scripts(旧来源)