Python命令行脚本中'script'与'entry_point'的优缺点
Python的setuptools有两种方法可以把命令行脚本添加到Python包里:script
和entry_point
。
这个教程详细介绍了这两种方法:
scripts
首先,把一个Python脚本(比如叫funniest-joke
)放到包的目录里,然后在setup.py
文件中添加这个脚本的路径:
setup(
...
scripts=['bin/funniest-joke'],
...
)
入口点:
同样,把一个Python脚本(比如叫funniest-joke
)放到包的目录里。然后在这个脚本里添加一个main()
函数,并且再添加一个叫command_line.py
的子模块,用来运行funniest
的main()
函数:
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 (旧版来源)