像fabric这样的包(用python编写)是如何使其CLI工具成为fab的

像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制作命令行工具感到好奇(不必键入
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',
            ]
        },
    )
    
    请创建一个subdir
    consoletest
    ,并在其中放入一个空的
    \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。