Nemes Mihály • nemes.budapest@gmail.com

— Utolsó módosítás: 2026.01.25 —

Python futtatása (részletes verzió)

Online interpreterek

Kisebb programok különböző Python verziókon való kipróbálásához és verziók közötti különbségek vizsgálatához hasznosak az online futtató környezetek, illetve olyankor is, amikor éppen a gépünkön nincs Python vagy még a konfigurálással szenvedünk és mégis tanulni, gyakorolni akarunk. Olyankor is hasznosak, amikor több Python verzióban ki akarunk próbálni valamit. Néhány online interpreter listája itt található.

Python programok közvetlen futtatása

A közvetlen szó itt azt jelenti, hogy nem valamilyen integrált fejlesztő környezetben (IDE-ben, mint pl. a VS Code) végezzük a Python programunk futtatását, hanem parancssorból vagy Notepad++-ban. Az előadáson a Notepad++-ban és a run_python.bat parancsfájl segítségével fogunk futtatni — egyébként persze mindenki olyan fejlesztő környezetet használ, amilyent akar.

python.exe helyének specifikálása

Ha a python.exe könyvtárát hozzáadjuk a PATH környezeti változóhoz, akkor a parancssorba elegendő annyit írnunk, hogy python. Ha ezt nem tesszük meg, például azért, mert több verzió is van a gépünkön és pontosan specifikálni akarjuk, melyik fusson, akkor ki kell írnunk a teljes elérési útvonalat és ha az útvonalban szóközök is előfordulhatnak, akkor idézőjelek közé kell tennünk:

c:\Users\NMI\AppData\Local\Programs\Python\Python36-32\python.exe
"c:\Users\NMI\AppData\Local\Program Files\Python\Python36-32\python.exe"
                                   
Én szeretem így csinálni: specifikálom a teljes elérési útvonalat, mert a gépemen több Python-verzió is van és néha ugyanazt a programot le akarom futtatni pl. a 3.8 és a 3.11 verzióval is, hogy megnézzem a működésbeli vagy a sebességbeli különbségeket.

Persze nem triviális, hogyan találom meg a python.exe helyét – erről lentebb részletesen szó lesz.

Egyébként itt a leírásban az egyszerűség kedvéért nem írom ki az elérési útvonalat, általában csak python vagy python.exe fog szerepelni.

python.exe helyének megkeresése

Total Commander

A fájlrendszer gyökerébe állunk – vagy ha tudjuk/sejtjük, hogy melyik mappa alatt lehet, pl. C:\Users\A123456789\AppData\Local, akkor oda.

Keresés: Commands → Search vagy Alt+F7
Search for: *python.exe
Amikor elkészült a lista, célszerű azt egy szövegfájlba átmásolni, úgy jobban kezelhető lesz:
Feed to listbox
Mark → Select All
Mark → Copy Names With Path To Clipboard
és bemásoljuk egy szöveges fájlba, vagy:
Feed to listbox
Mark → Select All
Mark → Save Selection To File

Windows parancssorból

A parancssori terminált elindítjuk: cmd, ezután, mondjuk ha egy exe_list.txt nevű fájlban akarjuk meglapni a listát:

where /R c:\ python.exe > exe_list.txt
c:\ helyett persze megadhatunk más könyvtárat is.

Everything (voidtools, nagyon gyors)

A keresőbe beírjuk, hogy python.exe. Ha fájlba akarjuk menteni:

  1. Edit ⇒ Select All
  2. File ⇒ Export
  3. Save as Type ⇒ Text File (*.txt)
  4. Kiválasztunk egy fájlt
  5. Save

File Intéző (Windows Intéző, File Explorer, Windows Explorer)

• Itt is a fájlrendszer gyökerébe állunk (Local Disk (C:)) – vagy ha tudjuk/sejtjük, hogy melyik mappa alatt lehet, pl. C:\Users\A123456789\AppData\Local, akkor oda.
• Jobboldalt felül a keresőablakba beírjuk, hogy python.exe.
• Amikor elkészült a lista, célszerű azt egy szövegfájlba átmásolni, úgy jobban kezelhető lesz.

  1. Ráállunk egy listaelemre és Ctrl-A-t nyomunk, ezáltal kiválasztjuk a teljes listát.
  2. Shift-jobbklikk segítségével felhozunk egy felugró menüt, ebből kiválasztjuk, hogy "Másolás elérési útként" (Copy as Path).
  3. Megnyitunk egy szöveges fájlt és Ctrl-V-vel belemásoljuk a listát.

python.exe helyének ellenőrzése programból

Ha meg akarok győződni arról, hogy tényleg a kívánt Pythont állítottam-e be, akkor csak ezt a kis programot kell lefuttatnom:

import sys

print(sys.executable)
Ki fogja írni a python.exe teljes elérési útvonalát.

Parancsok futtatása parancsértelmezőben [1] [3]

Ha a parancssori terminált elindítottuk (Windows alatt: cmd vagy powershell), akkor ebben felhívhatjuk a fentebb megadott módon a python.exe programot; ekkor megjelenik az interaktív mód promptja (rendszerint három > jel) és beírhatjuk a parancsokat, amelyek azonnal végrehajtódnak. A kifejezéseket leírhatjuk print() utasítás nélkül is, amikor ENTER-t ütünk, meg fogjuk kapni a kifejezés értékét.

A Python interpreter leállítását quit() paranccsal, Ctrl-Z (Windows) vagy Ctrl-C (Linux) kombinációval érhetjük el.

Ha beírtunk egy sort és ENTER-t nyomunk, kiértékelődik a sor. Olyan utasításoknál, amelyeknél folytatást vár az interpreter (pl. egy for ciklus feje), az ENTER hatására a következő sorra ugrik és a prompt megváltozik (rendszerint három pontra): Ilyenkor nem szabad megfeledkeznünk a megfelelő indentálásról; az utolsó sor után kitöröljük az indentálást és ENTER-t ütünk, ekkor végrehajtódik a kód.

python.exe
>>> for i in range(3):
...   print(i)
...   100 + i # interaktív üzemmódban elég leírni egy kifejezést
...
0
100
1
101
2
102

Ez a megoldás nyilván nehézkes, hiszen mindig újra be kell gépelnünk vagy másolnunk a parancsokat, ezért ritkán használjuk.

Szkript (program) futtatása [2] [3]

Amikor az utasításokat egy (általában .py kiterjesztésű) fájlba írjuk abból a célból, hogy ezt majd végrehajtassuk a Python interpreterrel, akkor a fájlt szkriptnek szoktuk nevezni – van, aki szerint a megnevezés nem szerencsés, inkább a program lenne precízebb név. Tegyük fel, hogy egy test.py nevű fájlba ezt írtuk:

i = 10
print('i:', i)
i = 20
Ekkor ezt így tudjuk végrehajtatni:
python.exe test.py

Szkript futtatása interaktívan: a -i parancssori kapcsoló [3]

Nem túl gyakran, de előfordul, hogy a szkript lefutása után még további parancsokat akarunk begépelni; azt szeretnénk szimulálni, mintha a fájl tartalmát közvetlenül írtuk volna be. Ilyenkor a -i kapcsolóval kell felhívnunk a Python interpretert:

python -i test.py
A képernyőn a Python interaktív promptját (>>>) fogjuk látni és pl. kiírathatjuk az i változó tartalmát, akár print() függvény nélkül is:
i: 10   # ezt írta ki a szkript
>>> i   # ezt gépeljük be a szkript lefutása után
20
>>>
Az interaktív mód hibakeresésnél lehet hasznos; globális változók tartalmát ki tudjuk íratni a szkript lefutása után akkor is, ha hibajelzéssel állt le a program.

Modul futtatása: a -m parancssori kapcsoló [3] [4] [5]

A -m kapcsoló segítségével le tudunk futtatni egy Python modult, pl.:

python -m pip numpy
python -m cProfile test.py
python -m trace -t test.py
python -m filecmp dir_1 dir_2
Figyeljük meg, hogy a modul nevéhez nem írunk semmilyen kiterjesztést. Az illető modul lehet nemcsak egyetlen fájl, hanem egy egész könyvtár is, ami egy Python programcsomagot (package) tartalmazhat.

Python verzió lekérdezése: a -V és -VV parancssori kapcsolók

A verzió rövid formátumának lekérdezése:

python -V
A hosszú formátumé:
python -VV

Futtatás run_python.bat segítségével

A run_python.bat tartalmazza a python.exe teljes elérési útvonalának megadását és a futtató parancsot. A SET py= kezdetű sorban le kell cserélni a python.exe elérési útvonalát az érvényes értékre.

Futtatás Notepad++-ban

A Run menü Run almenüjét választjuk ki (F5), a felugró ablakba ezt írjuk:

python.exe -i "$(FULL_CURRENT_PATH)"
szükség esetén python.exe teljes elérési útvonalával, majd elmentjük ezt a parancsot pl. pyrun néven. Mentéskor billentyűkombinációt is hozzá tudunk rendelni – vigyázzunk, hogy ez ne ütközzön már meglévővel. Pl. Ctrl-P szokott lenni a nyomtatás kombinációja, tehát ez már foglalt. A -i kapcsoló fontos, hogy ne záródjon be a parancs-ablak a szkript lefutása után.

Ezután a Run menüből kiválasztjuk a pyrun tételt, ekkor lefut interaktív módban a szövegszerkesztőben éppen megnyitott fájl.

Az adott fájlban található függvények listájának mutatása:

View → Function list

A sorszámok mutatásának ki-bekapcsolása:

Settings → Preferences → Editing →  Display line number

Amikor Notepad++-ból futtatunk, akkor az aktuális munka-könyvtár NEM a futtatott modul könyvtára lesz, amiről könnyen meggyőződhetünk:
import os

print(os.getcwd()) # C:\Program Files (x86)\Notepad++
Ez olyankor okoz meglepetést, amikor egy megnyitandó fájl helyét relatív útvonallal adjuk meg és hibajelzést kapunk:
file_obj = open('yyy.txt') # FileNotFoundError: [Errno 2] No such file or directory: 'yyy.txt'
Pedig ott van az yyy.txt fájl a szkriptünk könyvtárában... Csak épp a Python máshol tartózkodik.

Ha parancssorból, batch-fájlból indítjuk a Pythont, akkor ez a probléma nem lép fel. Megtehetjük persze, hogy lekérdezzük a szkriptfájl könyvtárát és "odalépünk":

import os

p = os.path.abspath(__file__)  # a szkript abszolút elérési útvonala
d = os.path.dirname(p)         # a könyvtár
os.chdir(d)                    # módosítjuk az aktuális könyvtárat
Próbáljuk ki!

Tabulátorok kezelése

Mivel a Pythonban a blokkokat indentálással kötelező ellátni, pl.:

if x == y:
    print('Hello')
    print('world')
a tabulátorok szóközzé alakításának nagy jelentősége van. Ugyanis az interpreter számára a tabulátor is csak egyetlen karakter, akárcsak a space, ha tehát a fenti példában az első print() előtt egy tabulátor áll, a második előtt pedig 4 szóköz, akkor hibajelzést fogunk kapni.

Notepad++-ban

A Notepad++-ban így tudjuk beállítani, hogy a tabulátorok szóközzé legyenek alakítva:

Settings → Preferences → Language
Itt a Tab settings részben van egy Replace by space kapcsoló. Fölötte pedig azt lehet beállítani, hogy hány szóköznek feleljen meg egy tabulátor (ajánlott: 4).

Újabb Notepad++ verzióknál a

Settings → Preferences → Indentation
alatt lehet ezt a beállítást megcsinálni.

A már meglévő tabulátorok lecserélése szóközökre:

Edit → Blank operations → TAB to space
Fehér karakterek mutatása:
View → Show symbol → Show white space and TAB

Nem ASCII karakterek kezelése

Célszerű a szkriptjeinket a szövegszerkesztőben utf-8 kódolással elmenteni, ekkor nem okoznak gondot az ékezetes karakterek változónevekben, sztringekben és megjegyzésekben:

bíztat = 'hajrá!' # megjegyzés
Ha pl. ISO 8852-ben van a szkript elmentve, akkor az elején egy megjegyzésben specifikálnunk kell ezt:
# coding: iso-8859-2
különben az első nem-ASCII (ékezetes) karakternél hibajelzést kapunk. A forrásfájl kódólásának specifikációját a fájl első vagy második sorába kell tennünk – a harmadik sorban már hatástalan.

Notepad++-ban

A Notepad++-ban az Encoding menüpont alatt lehet beállítani, hogy milyen kódolással mentse el a tartalmat. Azt, hogy éppen milyen kódolás van beállítva, a keret alsó sorában jobboldalt láthatjuk.

Bemenet és kimenet átirányítása

Ha a szkriptünk a standard bemenetről olvas és azt akarjuk, hogy fájlból jöjjön a bemenet, akkor így járunk el:

python.exe test.py < input.txt
A standard kimenetre – tipikusan print() segítségével – írtakat így tudjuk egy fájlba átirányítani:
python.exe test.py > output.txt
a standard hibakimenetre (stderr) írtakat, a hibajelzéseket pedig így:
python.exe test.py 2> error.txt
Windows alatt a 2 és a > között nem lehet szóköz. Nyilván mindkét átirányítást alkalmazhatjuk egyszerre:
python.exe test.py > output.txt 2> error.txt
Ha azt akarjuk, hogy ne mindig új fájl keletkezzen, hanem a már meglévő végéhez fűződjön hozzá, amit írunk, akkor két > jelet kell alkalmaznunk:
python.exe test.py >> output.txt 2>> error.txt
Jó gyakorlat: A képernyőre szánt hibaüzeneteket ne a standard kimenetre, hanem a standard hiba-kimenetre írjuk, így átirányítással könnyen szétválasztható az eredmény a hibaüzenettől. Nézzük meg először a rosszabbik megoldást, amikor mindent a standard kimenetre írunk – jobboldalt feltüntettük a kimenetet, amiben láthatólag jól elvész a hibaüzenet:
def func(param):
    if param < 0:   # hibát szimulálunk
        return 'baj'
    else:
        return 'ok'                                                                      írok
                                                                                         sokmindent
print('írok'); print('sokmindent'); print('jó');  print('hosszasan')                     
                                                                                         hosszasan
ret_val = func(-100)                                                                     ajjaj, func valami rosszat talált
if ret_val == 'baj':                                                                     megint írok
    print('ajjaj, func valami rosszat talált')                                           mindenfélét
                                                                                         jót
print('megint írok'); print('mindenfélét'); print('jót'); print('és szépet')             és szépet
Ha viszont a hibaüzenetet a standard hibakimenetre írjuk:
import sys
...
if ret_val == 'baj':
    print('ajjaj, func valami rosszat talált', file=sys.stderr)
...
és a kimenetet megfelelően átirányítjuk:
python.exe test.py > output.txt 2> error.txt
akkor a hibaüzenetek szépen különválnak.
output.txt                error.txt
írok ajjaj, func valami rosszat talált sokmindent jó hosszasan megint írok mindenfélét jót és szépet
Az átirányítással kapcsolatosan itt leírtak persze nem Python-specifikusak, bármilyen nyelven megírt programra érvényesek. Az átirányítást lehet a Python program belsejéből is intézni. [6]

Ez viszont Python-specifikus: ha interaktív üzemmódban indítjuk el a Pythont és átirányítjuk a hibakimenetet:

python.exe -i test.py 2> error.txt
akkor fennakad a program, nem tér vissza a prompt, tehát helyesen:
python.exe test.py 2> error.txt

VS Code beállítása

Itt két dolgot kell beállítani: a VS Code Python kiegészítőjét (extension) és az általa használt Python interpreter (azaz python.exe fájl) elérési útvonalát.

VS Code Python kiegészítője

File → Preferences → Settings
Keresőablakba: python (.exe nélkül) aztán install, ha még nincs ez a kiegészítő installálva.

Interpreter

Ha nem állított be automatikusan magának interpretert, vagy az nem felel meg nekem:

File → Preferences → Settings
Keresőbe:
python path

A kapott listában megkeresem ezt:

Python: Default Interpreter Path
Az alatta lévő szövegablakba bemásolom a python.exe útvonalát és kilépek a VS Code-ból. Amikor újra elindítom, akkor már a beállított Python verzióval fog dolgozni.

Futtatás Linuxon és macOS-en

A fentiek a Windows-on való futtatásra vonatkoznak. Linuxon és macOS-en a BBEdit szövegszerkesztőben tudunk a Notepad++-hoz hasonlóan futtatni interaktívan (a -i kapcsolóval) és mindkét oprendszeren rendelkezésre áll a VS Code fejlesztő környezet is.

A run_python.bat helyett létre kell hoznunk egy shell script fájlt pl. run_python.sh néven, futtathatóvá kell tennünk:

chmod +x run_python.sh
és ezt írjuk bele (persze a tényleges útvonallal):
/usr/bin/python3 -i test.py
echo "Press [Enter] to exit..."
read
A python.exe helyét így tudjuk megkeresni:
sudo find / -type f -name "python3" 2>/dev/null
A tabulátorokról és a karakterkódolásról elmondottak persze itt is érvényesek.