— Utolsó módosítás: 2026.01.25 —
🐍
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ó.
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.
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.
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.txtc:\ 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:
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.
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.
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.
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
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.
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_2Figyeljü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.
A verzió rövid formátumának lekérdezése:
python -VA hosszú formátumé:
python -VV
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.
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áratPróbáljuk ki!
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.
A Notepad++-ban így tudjuk beállítani, hogy a tabulátorok szóközzé legyenek alakítva:
Settings → Preferences → LanguageItt 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 → Indentationalatt 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 spaceFehér karakterek mutatása:
View → Show symbol → Show white space and TAB
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-2kü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.
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.
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.txtHa 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: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]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') jó 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épetHa 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.txtakkor 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
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.txtakkor fennakad a program, nem tér vissza a prompt, tehát helyesen:
python.exe test.py 2> error.txt
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 → SettingsKereső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 → SettingsKeresőbe:
python path
A kapott listában megkeresem ezt:
Python: Default Interpreter PathAz 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.
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..." readA python.exe helyét így tudjuk megkeresni:
sudo find / -type f -name "python3" 2>/dev/nullA tabulátorokról és a karakterkódolásról elmondottak persze itt is érvényesek.