像 fabric(写在 python 中)这样的包是如何让它的 CLI 工具 fab 的
How does a package like fabric (written in python) make its CLI tool fab
我对在 python 中制作命令行工具感到好奇(无需键入 python tool.py
)
我知道 fabric 会这样做,所以我开始浏览他们的 github 页面,但我无法找到 fab
工具的实际来源。
- 他们是怎么做到的?
- 让这样的工具正常工作的最简单方法是什么?
(跳过命令行部分,因为那是另一回事,只关注 fab.exe 的来源,因为你让我很好奇。)
来自setup.py,有趣的部分是:
entry_points={
'console_scripts': [
'fab = fabric.main:main',
]
},
它告诉我们实际开始的是什么。
要重现,这里几乎是空的setup.py:
#!/usr/bin/env python
from setuptools import setup
setup(
name='consoletest',
version='1.1',
entry_points={
'console_scripts': [
'consoletest = consoletest.main:main',
]
},
)
请创建一个子目录 consoletest
并在其中放入一个空的 __init__.py
(表明它是一个模块)加上一个包含以下内容的 main.py
:
def main():
print("hello")
然后发布
python setup.py install
在根目录中,如果一切顺利,将在 python 的 Lib/site-packages 目录中创建一个 egg 文件,并在 Scripts 目录中创建一个 consoletest
可执行文件。 (仅在 Windows/Python 2.7 下测试,因此您可能不会得到相同的结果。)
现在如果你启动 consoletest
它将打印 hello。
我对在 python 中制作命令行工具感到好奇(无需键入 python tool.py
)
我知道 fabric 会这样做,所以我开始浏览他们的 github 页面,但我无法找到 fab
工具的实际来源。
- 他们是怎么做到的?
- 让这样的工具正常工作的最简单方法是什么?
(跳过命令行部分,因为那是另一回事,只关注 fab.exe 的来源,因为你让我很好奇。)
来自setup.py,有趣的部分是:
entry_points={
'console_scripts': [
'fab = fabric.main:main',
]
},
它告诉我们实际开始的是什么。
要重现,这里几乎是空的setup.py:
#!/usr/bin/env python
from setuptools import setup
setup(
name='consoletest',
version='1.1',
entry_points={
'console_scripts': [
'consoletest = consoletest.main:main',
]
},
)
请创建一个子目录 consoletest
并在其中放入一个空的 __init__.py
(表明它是一个模块)加上一个包含以下内容的 main.py
:
def main():
print("hello")
然后发布
python setup.py install
在根目录中,如果一切顺利,将在 python 的 Lib/site-packages 目录中创建一个 egg 文件,并在 Scripts 目录中创建一个 consoletest
可执行文件。 (仅在 Windows/Python 2.7 下测试,因此您可能不会得到相同的结果。)
现在如果你启动 consoletest
它将打印 hello。