2008-08-20 4 views
37

Мой текущий setup.py скрипт работает нормально, но она устанавливает tvnamer.py (инструмент), как tvnamer.py в сайт-пакеты или где-то похожи ..Каков наилучший способ распространения инструментов командной строки python?

Могу ли я сделать setup.py установить tvnamer.py в tvnamer, и/или есть лучший способ установка приложений командной строки?

ответ

33

Попробуйте параметр entry_points.console_scripts в вызове setup(). Как описано в setuptools docs, это должно делать то, что я думаю, что вы хотите.

Чтобы воспроизвести здесь:

from setuptools import setup 

setup(
    # other arguments here... 
    entry_points = { 
     'console_scripts': [ 
      'foo = package.module:func', 
      'bar = othermodule:somefunc', 
     ], 
    } 
) 
+7

Когда я пытаюсь это с Python 2.6 и 3.1, я получаю сообщение `UserWarning: Неизвестный вариант распределения:«entry_points'`. Поэтому я думаю, что это не поддерживается в «distutils», который поставляется с Python (2.6 и 3.1). Итак, можно ли использовать эту опцию, если мы хотим распространять на PyPI? – 2010-03-17 01:04:02