Запуск кода Python с широко закрытыми глазами
Рассмотрим способы упрощенного запуска вашего сценария на компьютере третьей стороны (с ОС Linux или Windows с эмулятором командной строки Linux). В частности, будем использовать для этого возможности командной строки, которые позволяют автоматизировать ряд рутинных действий.
Превращаем скрипт в исполняемый файл
Для этого:
изменяем права доступа к нему командой chmod +x имя_сценария
в его начало добавляем строку вида #!путь_к_интерпретатору
запускаем из командной строки по пути расположения (например, ./имя_сценария).
Запустим простой скрипт на Python (prog.py):
#!/Users/al/opt/anaconda3/bin/python import argparse def get_args_parser(): parser = argparse.ArgumentParser() parser.add_argument('--proba', '-p', type=float, help = 'probability level', default=0.5) return parser if __name__=='__main__': parser = get_args_parser() args = parser.parse_args() print(args)
Утилита make
С ее помощью можно задать блоки кода которые вызываются в качестве ее аргументов. Рассмотрим запуск из текущей папки Makefile-а со следующим содержимым:
install: pip install -r requirements.txt run: python prog.py
Скрипт командной строки
Этот способ обладает наибольшей гибкостью... Заводим файл, наполняем его содержимым, делаем исполняемым (chmod +x имя) и запускаем из командной строки по пути расположения (например, ./имя). Если не сделать файл исполняемым, то его можно запустить посредством sh имя.
Представляю следующий многофункциональный скрипт для настройки виртуального окружения и запуска Python кода с параметрами командной строки:
#!/bin/bash if [ $# -eq 0 ]; then echo 'You must specify arguments' else NEW_ENV=1 # init env variables to use conda . /Users/a19036412/opt/anaconda3/etc/profile.d/conda.sh conda activate base if [ $1 = 'install' ]; then if [ $NEW_ENV -eq 1 ]; then conda deactivate && \ conda create --name temp_env python=3.6 -y && \ conda activate temp_env else echo 'Using default env' fi pip install -r requirements.txt elif [ $1 = 'run' ]; then conda deactivate && \ conda activate temp_env if [ $# -eq 1 ];then echo 'running with default proba level' python prog.py else python prog.py -p $2 fi else echo 'Useless param' fi fi
Тесты работы: