Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Runscript – утилита для запуска python скриптов

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 можно его приобрести. У компании огромный выбор сетевого оборудования высокого качества. За годы работы он положительно себя зарекомендовала, выполнена масса ИТ проектов.