像fabric这样的包(用python编写)是如何使其CLI工具成为fab的
我对用python制作命令行工具感到好奇(不必键入像fabric这样的包(用python编写)是如何使其CLI工具成为fab的,python,command-line-interface,fabric,Python,Command Line Interface,Fabric,我对用python制作命令行工具感到好奇(不必键入python tool.py) 我知道fabric会这样做,所以我开始浏览他们的github页面,但我无法找到fab工具的实际来源 他们是怎么做到的 让这样的工具工作的最小方法是什么 (跳过命令行部分,因为这是另一个故事,只关注fab.exe的来源,因为你让我很好奇。) 它来自setup.py,有趣的部分是: entry_points={ 'console_scripts': [ 'fab = fabric
python tool.py
)
我知道fabric会这样做,所以我开始浏览他们的github页面,但我无法找到fab
工具的实际来源
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',
]
},
)
请创建一个subdirconsoletest
,并在其中放入一个空的\uuuu init\uuuuu.py
(告诉它是一个模块)加上一个main.py
,内容如下:
def main():
print("hello")
然后发行
python setup.py install
在根目录中,如果一切顺利,将在python的Lib/site packages目录中创建一个egg文件,并在Scripts目录中创建一个consoletest
可执行文件。(仅在Windows/Python 2.7下测试,因此可能不会得到相同的结果。)
现在,如果您启动
consoletest
,它将打印hello。在Linux中,如果您在第一行添加shebang
(即#!/usr/bin/env python
)并设置execution attrib
(chmod+x script.py
),那么您可以直接运行script.py
。你甚至可以删除扩展名.py
我怀疑这一点,我以为我在osx上试过了,但没有用……我会在我的电脑上再次尝试shebang
必须在第一行,它必须从开始代码>(
=she,!
=bang)。它需要执行属性才能工作。OSX的工作原理应该类似于Linux。