Запуск кода 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Тесты работы: