Как сделать так, чтобы скрипт Python выполнялся как тривиальная команда linux с Distutils?

Мне нужно запустить модуль python как обычную команду Linux, не беспокоясь о расположении файла. Могу ли я сделать это с Distutils?

Конкретно о том, что мне нужно. Пользователь должен выполнить простую установку и иметь возможность использовать ее:

python setup.py install
mymodule --arg value

Как это сделать?

2 ответа

Решение

Если вы укажете список скриптов в setup(), distutils автоматически установит их в соответствующий каталог:

from distutils.core import setup

setup(
    name='somemodule',
    scripts=['mymodule']
)

Обратите внимание, что mymodule здесь для вашего примера должен быть запущенный скрипт на python с таким именем; это, вероятно, не должен быть ваш настоящий модуль, а скорее импортировать ваш модуль, если это необходимо.

Если вы хотите выполнить команду, указав только ее имя, ее необходимо установить в каталог, указанный в PATH переменная окружения. Для пользовательских программ обычные места /bin, /usr/bin/usr/local/bin быть довольно распространенным тоже).

Так что настройте свой пакет для установки вашего скрипта в одном из этих мест. Однако это потребует root привилегии.

Если вы хотите иметь возможность установить без root привилегии, альтернатива заключается в том, чтобы убедиться, что каталог скрипта указан в PATH переменная.

Другие вопросы по тегам