如果我有一个用 Python 编写的命令行程序(特别是使用我认为使用 argparse 的docopt),并且我想运行它my-program command1 args
而不是python my-program.py command1 args
,我该怎么办?目前,这适用于基于 Debian 的操作系统(例如 Ubuntu)。
我通常把我的模块做成一个包,所以我已经有了setup.py
,但这并没有给我一个免费的命令。
谢谢!
编辑
@pyrospade 在下面给出了一个非常好的链接。我将分享我的结果。
假设我们有
top-level-directory
setup.py
package/
__init__.py
cli.py
scripts=['package/cli.py']
如果你想cli.py
在 shell中访问,你可以使用。
如果你想运行 as my-cli
,你可以使用
entry_points={
'console_scripts':
['my-cli=package.cli:main']
}
由于我使用docopt
,我有这个
def dispatcher(...)
def fun1(....)
def main():
arguments = docopt(COMMAND, version="xxxx")
dispatcher(arguments)
if __name__ == '__main__':
main()
您甚至可以__init__.py
说['my-cli=package:main']
,但同样,您需要一个名为 的函数main()
。但是你可以随意命名它。只是说。