2016-11-04 8 views
1

мне было любопытно, что делает инструменты командной строки в Python (без необходимости вводить python tool.py)Как пакет как ткань (написанный в питоне) делают его CLI инструмент ФАБ

Я знаю, что ткань делает это таким образом, я начал искать через их страница github, и я не мог отследить, откуда на самом деле появляется инструмент fab.

  1. Как они это делают?
  2. Что такое минимальный способ получить такой инструмент?

https://github.com/fabric/fabric

+0

в Linux, если вы добавите 'shebang' (т.е.' #!/Usr/bin/env python') в первую строку и установите 'execute attrib' (' chmod + x script.py'), тогда вы можете запускать напрямую 'script.py' вместо' python script.py'. Вы даже можете удалить расширение '.py' – furas

+0

Я подозревал, что и мне показалось, что я пробовал его на osx, но это не сработало ... Я попробую еще раз, когда на моем компьютере – deltaskelta

+0

' shebang' должен быть первым line, он должен начинаться с '#!' ('#' = she, '!' = bang). И для этого нужно «исправить атрибут». OSX должен работать аналогично Linux. – furas

ответ

1

(Пропустив часть командной строки, как это другая история, и только упором на котором 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 

в корне, и если все будет хорошо, файл яйца будет создан в каталоге lib/site-packages python и в исполняемом файле consoletest в директории Scripts. (Протестировано только под Windows/Python 2.7, поэтому вы не можете получить тот же результат.)

Теперь, если вы запустите consoletest, он распечатает привет.