Python scripts raspberry pi

Raspberry Pi 3 Raspbian: Running Python scripts on IDLE

In this tutorial, we will check how to write Python scripts and run them using IDLE, a Python IDE. This tutorial was tested on a Raspberry Pi 3 model B+, running version 4.9 of Raspbian, installed using NOOBS.


Introduction

In this tutorial, we will check how to write Python scripts and run them using IDLE.

As we have seen in the previous tutorials, we can easily run Python commands on a Python interpreter, either on IDLE or on the command line. Nonetheless, if we want to write larger and more complex programs, it becomes impracticable to send the commands one by one.

Furthermore, if some command takes a while to run, it is not feasible to have someone waiting for it to finish to send the next commands.

Thus, the most practical way of running Python code is on a script, which is a sequence of instructions that will be interpreted by the Python interpreter. In this case, we don’t need to manually send the instructions one by one.

Python scripts can be written in a text file, with a .py extension, and can run from the command line. Nonetheless, in this tutorial, we will check how to do it with IDLE, a Python IDE (Integrated Development Environment).

This tutorial was tested on a Raspberry Pi 3 model B+, running version 4.9 of Raspbian, installed using NOOBS. Nonetheless, it should also work with a Python installation on a regular computer.

Читайте также:  Php echo with new lines


Running a script

Since we are going to use IDLE, the first thing we need to do is opening this IDE. I’m using Python 3.x, but the procedure to run the script on Python 2.x should be similar.

So, to open IDLE, go to the main menu and select Programming. Then, on the list of tools that will be displayed, choose Python 3 (IDLE), as indicated in figure 1.

Raspberry Pi 3 Raspbian openning IDLE

Figure 1 – Opening the IDLE IDE.

After the IDE opens, select the File menu on the top left corner, as indicated in figure 2.

IDLE File menu

Figure 2 – Opening the File menu on IDLE.

There, select the New File option, which should open a new text editor window. There we can write our script, which will correspond to the Python instructions we want to run.

For testing purposes, you can use the code below. It basically prints a “Hello World” message and then has a loop between 0 and 9 where it prints the value of each iteration of the loop. You can read more about the Python range function here.

print("Hello World") for x in range(0,10): print(x)

You should end with a result similar to figure 3, which shows the previous script written on the editor. Note the Python syntax color highlighting that we get when writing the script on IDLE.

IDLE Writing a script

Figure 3 – Writing the script on IDLE.

Now, to run the script, simply click in the Run menu and select Run Module. An alert box asking to save the file will pop, since we haven’t yet saved the file. This is shown in figure 4.

IDLE Saving script file.png

Figure 4 – Script saving alert window.

On the alert window click the Ok button. As shown in figure 5, it should open the file explorer, where we can choose a location to save the script. I’ve saved mine in the Desktop. We also need to name the file. I’ve named it test, but you can call it whatever you want.

IDLE Save script file explorer

Figure 5 – Saving the script file.

After clicking the Save button, the file should get saved with a .py extension on the folder selected. The script should run automatically, with the output being printed to the IDLE Python shell, as shown in figure 6.

Python IDLE Raspberry Pi script output

Figure 6 – Output of the script on the Python shell.

Источник

Автозапуск python скрипта на Raspberry Pi.

Сегодня будет статья / заметка / ответ на часто задаваемый вопрос. Итак, кратчайшая предыстория. На нашем форуме был опубликован вопрос по поводу автозапуска скрипта при включении Raspberry. И внезапно пришло осознание, что вопрос этот возникает достаточно часто, так, почему бы, собственно, не оформить ответ на него более глобально. То есть в виде заметки на основном сайте. Так что, переходим к разбору, как выполнить автозапуск python скрипта на Raspberry Pi.

Итак, способы решения поставленной задачи многообразны и разнообразны. Разберем несколько из них, может пару-тройку. Кстати любые комментарии по данной теме крайне приветствуются — другие варианты, плюсы/минусы, идеи, вопросы )

Создаем подопытный скрипт на python’е — script.py. Что он будет делать в данном случае вообще не важно, я возьму тестовый скрипт с ШИМ:

import RPi.GPIO as GPIO import time GPIO_PWM_0 = 12 WORK_TIME = 300 DUTY_CYCLE = 50 FREQUENCY = 100 print('script execution begins') GPIO.setmode(GPIO.BCM) GPIO.setup(GPIO_PWM_0, GPIO.OUT) pwmOutput_0 = GPIO.PWM(GPIO_PWM_0, FREQUENCY) pwmOutput_0.start(DUTY_CYCLE) time.sleep(WORK_TIME) pwmOutput_0.stop() pwmOutput_1.stop() GPIO.cleanup() print('script execution ends')

Останавливаться на его работе не будем, в общем-то в статье про ШИМ все это есть. Физически файл у меня находится в:

Для запуска скрипта соответственно:

sudo python /home/pi/PythonScripts/script.py

Переходим к сути дела — автозапуску.

Вариант 1. Автозапуск скрипта через /etc/profile.

При запуске оболочки bash последняя использует набор стандартизированных файлов для создания окружения. К этим файлам относится и /etc/profile. Мы под шумок можем поместить в этот файл дополнительную команду, выполняющую запуск нашего скрипта. Открываем файл в редакторе:

И добавляем в конец файла строку:

sudo python /home/pi/PythonScripts/script.py

Сохраняем файл, закрываем — на этом все, задача решена. Но тут необходимо упомянуть два дополнительных нюанса.

Первый связан с тем, что в соответствии с механизмом, который мы использовали, команда будет выполняться каждый раз при запуске bash в интерактивном режиме. То есть, в частности, при запуске терминала, либо при подключении к плате по SSH. Скрипт в данных случаях будет запускаться каждый раз. Дальше уже нужно смотреть по конкретной цели — нужно это или нет.

Второй нюанс заключается в том, что работать с командной строкой можно будет лишь по окончанию выполнения скрипта. И если скрипт, например, содержит бесконечный цикл, либо операции, требующие некоторого времени, то в конце команды нужно добавить амперсанд — &:

sudo python /home/pi/PythonScripts/script.py &

Автозапуск python скрипта на Raspberry Pi

Эта модификация приведет к выполнению команды в отдельном потоке, что решает обозначенную выше проблему.

Вариант 2. Автозапуск скрипта через /etc/rc.local.

В данном случае команда, добавленная в этот файл, будет выполняться уже однократно — при запуске ОС (т. е. при включении платы). Сам процесс организации автозапуска по сути идентичен, открываем файл для редактирования:

И в конце файла, но(!) перед «exit 0» добавляем запуск скрипта:

sudo python /home/pi/PythonScripts/script.py &

Автозапуск при старте системы Raspberry Pi

Обращаем внимание на & в конце строки — причина его использования все в том же — обеспечить выполнение скрипта в отдельном потоке. В данном случае это еще более важно. Поскольку команды из rc.local будут выполняться в процессе загрузки системы, то запуск пользовательского скрипта с бесконечным циклом приведет попросту к тому, что система не стартанет. Так что бдительность и внимательность 👍

По той же причине, что скрипт будет выполняться при загрузке системы, получить обратную связь от него проблематично. И если там будет ошибка, и ОС не запустится, то поиск этой ошибки может стать непростой задачей. К счастью, очень просто организовать логирование выполнения скрипта. Для этого модифицируем команду запуска:

sudo python /home/pi/PythonScripts/script.py & > /home/pi/PythonScripts/script_log.txt 2>&1

Теперь в файл /home/pi/PythonScripts/script_log.txt будет записан, во-первых, вывод скрипта (то, что там находится в print() ), и, во-вторых, ошибки, если таковые имели место при его выполнении.

Так, на этом и заканчиваем тогда обзор данной проблемы, спасибо за внимание, прочтение, обратную связь 🤝

Источник

Оцените статью