Praca nad projektami w języku Python na Raspberry Pi Zero W często zaczyna się w komfortowym środowisku Visual Studio Code. Chcąc wykorzystać wygodę zdalnego dostępu oferowaną przez rozszerzenie Remote – SSH, natknąłem się na niespodziewaną przeszkodę. Okazało się, że architektura ARMv6, serce Raspberry Pi Zero W, nie jest kompatybilna z serwerem vscode-server instalowanym przez Remote SSH. W poszukiwaniu wyjścia z tej sytuacji, zwróciłem się o pomoc do ChatGPT i znalazłem skuteczną alternatywę.
CharGPT: Oto komplet gotowych plików, które umożliwią Ci:
-
Wysłanie projektu z Maca na Raspberry Pi
-
Automatyczne utworzenie
venv
na Raspberry Pi -
Instalację zależności z
requirements.txt
-
Uruchomienie Twojego programu
📁 Struktura folderu pi-project
na Twoim Macu
pi-project/
├── main.py
├── requirements.txt
├── install-on-pi.sh
└── deploy.sh
🧱 Zawartość plików
1. main.py
— przykładowy kod Pythona
# main.py
import requests
print("Hello from Raspberry Pi!")
response = requests.get("https://api.github.com")
print("GitHub status:", response.status_code)
2. requirements.txt
— lista bibliotek
requests
Dodawaj tu wszystko, co Twój projekt potrzebuje (np. flask
, numpy
, paho-mqtt
itd.).
3. install-on-pi.sh
— uruchamiane na Raspberry Pi
#!/bin/bash
echo "📦 Tworzenie środowiska wirtualnego..."
python3 -m venv venv
source venv/bin/activate
echo "📦 Instalacja zależności..."
pip install -r requirements.txt
echo "🚀 Uruchamianie programu..."
python main.py
Uczyń go wykonywalnym:
chmod +x install-on-pi.sh
4. deploy.sh
— uruchamiane na Macu
#!/bin/bash
PI_USER=minimj
PI_HOST=raspberrypir2.local
REMOTE_DIR=/home/$PI_USER/pi-project
echo "📤 Wysyłanie projektu na Raspberry Pi..."
scp -r . "$PI_USER@$PI_HOST:$REMOTE_DIR"
echo "🔗 Łączenie przez SSH i uruchamianie skryptu instalacyjnego..."
ssh "$PI_USER@$PI_HOST" "cd $REMOTE_DIR && bash install-on-pi.sh"
Uczyń go wykonywalnym:
chmod +x deploy.sh
🚀 Jak uruchomić?
Z poziomu Maca:
cd ~/pi-project
./deploy.sh
Wszystko — łącznie z venv
i instalacją zależności — wykona się automatycznie na Raspberry Pi.
Po przetestowaniu całości, które wypadło świetnie, poprosiłem ChatGPT o wyjaśnienie co dokładnie się działo na moim komputerze i na Raspberry Pi Zero W.
🖥️ Wyjaśniam co działo się na Twoim Macu:
-
Utworzyłeś folder projektu (np.
~/pi-project
) i umieściłeś w nim:-
main.py
– Twój kod w Pythonie, -
requirements.txt
– listę bibliotek do zainstalowania na Pi, -
install-on-pi.sh
– skrypt, który Raspberry Pi uruchamia, aby przygotować środowisko i uruchomić program, -
deploy.sh
– skrypt uruchamiany z Maca, który:-
przesyła pliki na Raspberry Pi przez
scp
, -
łączy się zdalnie przez
ssh
, -
uruchamia
install-on-pi.sh
na Raspberry Pi.
-
-
-
Uruchomiłeś
deploy.sh
, co zainicjowało cały proces.
🍓 Co działo się na Raspberry Pi Zero W:
-
📁 Pliki z projektu zostały przesłane do katalogu
~/pi-project
. -
🐚 Raspberry Pi wykonał polecenia z
install-on-pi.sh
:-
utworzył wirtualne środowisko Python (
venv
) w katalogu projektu, -
aktywował to środowisko (
source venv/bin/activate
), -
zainstalował bibliotekę
requests
(zrequirements.txt
) za pomocąpip
, -
uruchomił Twój program
main.py
.
-
-
🖨️ Program
main.py
zrobił zapytanie HTTP do GitHub API i wyświetlił status odpowiedzi — co potwierdziło, że:-
Raspberry Pi ma połączenie z internetem,
-
Python działa prawidłowo,
-
biblioteka
requests
została zainstalowana poprawnie.
-
✅ Dzięki temu:
-
Programujesz lokalnie na Macu, gdzie masz wygodny edytor i szybki dostęp do plików.
-
Raspberry Pi wykonuje kod, instalując potrzebne zależności i działając jak mały serwer.
-
Wszystko dzieje się przez Wi-Fi/USB bez potrzeby monitora, klawiatury czy myszy.
Nowy skrypt deploy.sh, który wysyła zawartość foldera do Raspberry
Oto zaktualizowany, prosty i inteligentny skrypt deploy.sh
, który:
-
używa
rsync
(szybszy odscp
), -
pomija
venv
, -
może zainstalować zależności (jeśli chcesz),
-
uruchamia Twój program po przesłaniu.
📄 Plik deploy.sh
Umieść go lokalnie w folderze Twojego projektu na macOS (~/pi-project/deploy.sh
):
#!/bin/bash
# Zmienne – dostosuj w razie potrzeby
PI_USER="pi"
PI_HOST="raspberrypir2.local"
PI_PROJECT_PATH="/home/pi/pi-project"
LOCAL_PROJECT_PATH="$(pwd)"
REMOTE="$PI_USER@$PI_HOST:$PI_PROJECT_PATH"
echo "📦 Synchronizuję projekt na Raspberry Pi..."
rsync -avz \
--exclude'.venv'\
--exclude'*.sh'\
--exclude'*.pyc'\
--exclude'__pycache__'\
--exclude'.DS_Store'\
--exclude'.git'\
--exclude'.gitignore'\
"$LOCAL_PROJECT_PATH/""$REMOTE/"
echo "✅ Synchronizacja zakończona."
echo "🔗 Łączenie przez SSH w celu aktywacji środowiska i uruchomienia programu..."
ssh "$PI_USER@$PI_HOST" << 'EOF'
cd ~/pi-project
source venv/bin/activate
pip install -r requirements.txt
python3 main.py
EOF
🛠 Co robi skrypt?
-
Synchronizuje cały folder projektu z Pi (pomijając
venv
i.git
). -
Łączy się z Pi przez
ssh
. -
Aktywuje zdalne środowisko wirtualne.
-
Instaluje wymagane biblioteki (z
requirements.txt
). -
Uruchamia
main.py
.
✅ Jak używać?
-
Upewnij się, że masz uprawnienia do wykonania:
chmod +x deploy.sh
-
Uruchom z terminala:
./deploy.sh