Runscript – утилита для запуска python скриптов
Наверное, многим разработчикам знакома ситуация, когда в проекте необходимо совершить определенные действия. Чтобы сделать это мы создаем специальный скрипт на питоне, кладем его в корень проекта и запускаем по необходимости. Таким образом со временем имеем захламленную корневую директорию проекта, чтобы избавится от этого решаем перекинуть все скрипты в отдельную папку и тут нас ждут проблемы.
Если мы указываем интерпретатору python новый путь, в котором содержится наша новая папка, то скрипты не сработают, так как не работают импорты пакетов, расположенные в корне проекта, поскольку в sys.path корня проекта нет. Есть несколько вариантов выхода из такой ситуации. Мы можем сделать маленькую утилиту для запуска скриптов, которая бы перед их стартом меняла sys.path и положить ее в корень. Можно и что-то другое сделать. Но, мне это уже надоело, зачем постоянно изобретать колесо, если можно один раз собрать велосипед и постоянно на нем кататься? Я так и сделал, создал runscript.
Библиотека легко устанавливается через pip:
$ pip install runscript В результате в вашей системе будет новая команда run, которая и будет запускать скрипты. Со стандартными настройками она будет искать скрипты в папке script каталога в котором вы находитесь на данный момент.
Разберем ее работу на простеньком примере. Делаем папку script. Создадим пустым файлик script/__init__.py, сделав данный каталог python-пакетом. Делаем еще один файлик script/preved.py, внутри пишем:
def main(**kwargs): print("Preved, medved!") Теперь у нас есть скрипт, можно запускать:
$ run preved Preved, medved! Радуемся, скрипт заработал. Команда очень примитивная неправда ли? Она просто запускает наши скрипты. Казалось бы, какой в этом смысл, но, когда в каждом проекте вам нужно запускать простенькие скрипты, вы сами заметите, что постоянно будете ею пользоваться. Позже к этой утилите было добавлены полезные функции, сейчас поговорим о них.
Получение параметров через командную строку
Если вам необходимо, чтобы скрипт через командую строку получал определенные параметры, необходимо прописать их в setup_arg_parser в самом скрипте. На вход функция получит ArgumentParser, здесь вы указываете необходимые параметры. После вызова скрипта, значения параметров передаются функции main.
Вот простой пример:
def setup_arg_parser(parser): parser.add_argument("-w", "--who", default="medved") def main(who, **kwargs): print("Preved, {}".format(who)) Попробуем запустить:
$ run preved Preved, medved $ run preved -w anti-medved Preved, anti-medved Активация Django
Пользуетесь фреймворком Django? Значит знаете, что для работы нужно кое-что сделать. А именно – создать environment переменной DJANGO_SETTING_MODULE, где указан путь к настройкам. Как правило, в скрипты питона вписывают:
import os os.environ["DJANGO_SETTINGS_MODULE"] = "settings" В Django 1.7 и старше добавляем еще и:
import django django.setup() Для автоматизации посредством команды run нам необходимо сделать в корне файлик с настройками – run.ini:
[global] django_settings_module = settings django_setup = yes Где искать скрипты?
Дефолтно утилита будет искать скрип в пакетах script и grab.script. Чтобы изменить такие места в run.ini добавляем следующее:
[global] search_path = package1.script,foo,bar Таким образом, выполнив ту же команду «run preved» мы сделаем так, что утилита будет пытаться импортировать модуль preved в таком порядке:
• package1.script.preved • foo.preved • bar.preved Это еще не все функции. Если у вас есть вопросы, можете изучить исходный код
github.com/lorien/runscript/blob/master/runscript/cli.py
Вам необходимо качественное сетевое оборудование? Нужен Cisco Catalyst 3850 на www.vtkt.ru можно его приобрести. У компании огромный выбор сетевого оборудования высокого качества. За годы работы он положительно себя зарекомендовала, выполнена масса ИТ проектов.

