Ero sivun ”Python” versioiden välillä
| (4 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 44: | Rivi 44: | ||
Useimmissa Linux-jakeluissa Python 3 on valmiina. Tarvittaessa sen voi asentaa: | Useimmissa Linux-jakeluissa Python 3 on valmiina. Tarvittaessa sen voi asentaa: | ||
Debian/Ubuntu | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt install python3 python3-pip | sudo apt install python3 python3-pip | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Fedora | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo dnf install python3 python3-pip | sudo dnf install python3 python3-pip | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Arch Linux | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo pacman -S python python-pip | sudo pacman -S python python-pip | ||
| Rivi 79: | Rivi 79: | ||
== Standardikirjasto == | == Standardikirjasto == | ||
Pythonin mukana tulee laaja | Pythonin mukana tulee laaja ja monipuolinen standardikirjasto, joka kattaa | ||
* | tiedostojen käsittelyn, prosessit, verkon, tietotyypit, sarjallistamisen, | ||
* | komentorivityökalut ja paljon muuta. Alla on yleisesti käytettyjä ja | ||
* | Linux-ympäristössä hyödyllisiä moduuleita ryhmiteltynä aihealueittain. | ||
* | |||
* | === Tiedostot ja käyttöjärjestelmä === | ||
* | * <tt>os</tt> – käyttöjärjestelmän palvelut, tiedostot, prosessit ja ympäristömuuttujat | ||
* | * <tt>pathlib</tt> – tiedostopolkujen käsittely oliopohjaisesti (suositeltava vaihtoehto <tt>os.path</tt>-moduulille) | ||
* | * <tt>shutil</tt> – tiedostojen ja hakemistojen kopiointi, siirto ja poistaminen | ||
* <tt>stat</tt> – tiedostojen tilatiedot | |||
* <tt>tempfile</tt> – väliaikaistiedostot ja -hakemistot | |||
=== Prosessit ja komentorivi === | |||
* <tt>sys</tt> – Python-tulkin asetukset ja komentoriviparametrit | |||
* <tt>argparse</tt> – komentoriviparametrien käsittely | |||
* <tt>subprocess</tt> – ulkoisten komentojen suorittaminen | |||
* <tt>logging</tt> – lokitus ja diagnostiikka | |||
* <tt>venv</tt> – virtuaaliympäristöjen luonti | |||
=== Aika ja päivämäärät === | |||
* <tt>time</tt> – ajanotto, viiveet ja aikaleimat | |||
* <tt>datetime</tt> – päivämäärät ja kellonajat (suositeltavampi ja monipuolisempi kuin <tt>time</tt>) | |||
* <tt>calendar</tt> – kalenteritoiminnot | |||
=== Data, tietotyypit ja sarjallistaminen === | |||
* <tt>json</tt> – JSON-tiedostojen käsittely | |||
* <tt>pickle</tt> – Python-olioiden sarjallistaminen ja tallennus | |||
* <tt>csv</tt> – CSV-tiedostojen luku ja kirjoitus | |||
* <tt>sqlite3</tt> – sisäänrakennettu SQLite-tietokanta | |||
* <tt>dataclasses</tt> – helppo tapa määritellä tietorakenteita (Python 3.7+) | |||
=== Matematiikka ja satunnaisuus === | |||
* <tt>math</tt> – matemaattiset funktiot ja laskutoimitukset | |||
* <tt>statistics</tt> – perus tilastolliset laskut | |||
* <tt>random</tt> – satunnaislukujen generointi ja arvonnat | |||
* <tt>fractions</tt> – rationaaliluvut | |||
* <tt>decimal</tt> – tarkka desimaalilaskenta | |||
=== Verkko ja protokollat === | |||
* <tt>socket</tt> – matalan tason verkkoyhteydet | |||
* <tt>http.client</tt> – HTTP-yhteydet | |||
* <tt>urllib</tt> – URL-käsittely ja verkkopyynnöt | |||
* <tt>ipaddress</tt> – IPv4- ja IPv6-osoitteiden käsittely | |||
=== Pakkaus ja arkistointi === | |||
* <tt>zipfile</tt> – ZIP-pakettien luonti ja purku | |||
* <tt>tarfile</tt> – TAR-arkistot | |||
* <tt>gzip</tt> – gzip-pakkaus | |||
=== Graafiset käyttöliittymät === | |||
* <tt>tkinter</tt> – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto | |||
== Suositut lisäkirjastot == | == Suositut lisäkirjastot == | ||
* | * requests – HTTP-kyselyt | ||
* | * numpy, scipy – numeerinen laskenta | ||
* | * pandas – taulukkomuotoinen data | ||
* | * matplotlib, seaborn – visualisointi | ||
* | * pytest – testaus | ||
* | * pygame – peliohjelmointi | ||
* | * PyQt, GTK (PyGObject) – graafiset käyttöliittymät | ||
* | * pytorch, tensorflow – koneoppiminen | ||
== Suositut graafiset käyttöliittymät == | == Suositut graafiset käyttöliittymät == | ||
Pythonilla voidaan toteuttaa graafisia käyttöliittymiä useilla eri kirjastoilla. | Pythonilla voidaan toteuttaa graafisia käyttöliittymiä useilla eri kirjastoilla. | ||
Linux-ympäristöissä suosituimpia ovat: | Linux-ympäristöissä suosituimpia ovat: | ||
* [[GTK]] (PyGObject) – GNOME-ympäristön käyttämä kirjasto; hyvä valinta | * [[GTK]] (PyGObject) – GNOME-ympäristön käyttämä kirjasto; hyvä valinta natiivin Linux-sovelluksen rakentamiseen. | ||
* [[Qt]] (PyQt / PySide) – monialustainen ja laaja käyttöliittymäkirjasto, joka soveltuu sekä kevyisiin että vaativiin sovelluksiin. | |||
* [[Qt]] (PyQt / PySide) – monialustainen ja laaja käyttöliittymäkirjasto | * Tkinter – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto, joka on helppo aloittelijoille ja pieniin työkaluihin. | ||
* customtkinter – Tkinterin modernisoitu versio, joka tarjoaa tumman teeman, nykyaikaiset widgetit ja paremman ulkoasun ilman ulkoisia riippuvuuksia. | |||
* Tkinter – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto | * Kivy – suunniteltu kosketusnäytöille ja monialustaisiin sovelluksiin (Linux, Windows, Android, iOS). | ||
* wxPython – natiivikomponentteja hyödyntävä kirjasto, joka toimii hyvin useilla alustoilla. | |||
* customtkinter – Tkinterin modernisoitu versio, joka tarjoaa tumman teeman, | * Dear PyGui – moderni ja nopea Immediate Mode -käyttöliittymäkirjasto, joka soveltuu erityisesti työkaluohjelmiin ja visualisointeihin. | ||
* LexGUI (lex) – kevyt ja moderni käyttöliittymäkirjasto, joka tarjoaa yksinkertaisen API:n ja tyylikkään ulkoasun; sopii pieniin työkaluihin ja prototyyppeihin. | |||
* Kivy – suunniteltu kosketusnäytöille ja monialustaisiin sovelluksiin | * Flet – moderni ja monialustainen käyttöliittymäkirjasto, joka mahdollistaa web-, desktop- ja mobiilisovellusten rakentamisen Pythonilla ilman HTML-, CSS- tai JavaScript-osaamista. Sovellukset käyttävät Flutterin komponentteja, ja ne voidaan ajaa paikallisesti tai palvelimelta käsin. | ||
* wxPython – natiivikomponentteja hyödyntävä kirjasto, joka toimii hyvin | |||
* Dear PyGui – moderni ja nopea Immediate Mode -käyttöliittymäkirjasto, | |||
* LexGUI (lex) – kevyt ja moderni käyttöliittymäkirjasto, joka tarjoaa | |||
* Flet – moderni ja monialustainen käyttöliittymäkirjasto, joka mahdollistaa | |||
Nämä kirjastot ovat saatavilla useimpien Linux-jakeluiden pakettivarastoista | Nämä kirjastot ovat saatavilla useimpien Linux-jakeluiden pakettivarastoista | ||
| Rivi 128: | Rivi 158: | ||
=== Virtuaaliympäristön luominen ja käyttö === | === Virtuaaliympäristön luominen ja käyttö === | ||
Virtuaaliympäristö (''virtual environment'', venv) on Pythonin työkalu, | |||
jolla projektikohtaiset kirjastot ja riippuvuudet voidaan eristää muusta | jolla projektikohtaiset kirjastot ja riippuvuudet voidaan eristää muusta | ||
järjestelmästä. Tämä on erityisen tärkeää Linux-järjestelmissä, joissa | järjestelmästä. Tämä on erityisen tärkeää Linux-järjestelmissä, joissa | ||
| Rivi 135: | Rivi 165: | ||
Virtuaaliympäristöjen käyttö on suositeltavaa, koska: | Virtuaaliympäristöjen käyttö on suositeltavaa, koska: | ||
Projektit pysyvät erillään toisistaan – eri projektit voivat käyttää eri versioita samoista kirjastoista ilman ristiriitoja. | |||
* Järjestelmän Python pysyy puhtaana – järjestelmän omia työkaluja (esim. paketinhallinta) ei rikota asentamalla globaaleja paketteja. | |||
* Järjestelmän Python pysyy puhtaana – järjestelmän omia työkaluja | * Toistettavuus paranee – projektin riippuvuudet voidaan määritellä tarkasti (esim. ''requirements.txt''), mikä helpottaa kehitystä ja julkaisemista. | ||
* Turvallisuus paranee – eristetty ympäristö vähentää riskiä, että kolmannen osapuolen kirjastot vaikuttaisivat järjestelmätasoisiin komentoihin tai palveluihin. | |||
* Toistettavuus paranee – projektin riippuvuudet voidaan määritellä | |||
* Turvallisuus paranee – eristetty ympäristö vähentää riskiä, että | |||
Virtuaaliympäristö luodaan komennolla:: | Virtuaaliympäristö luodaan komennolla:: | ||
| Rivi 172: | Rivi 196: | ||
lisätään yleensä versionhallinnan ohituksiin, kuten ''.gitignore''-tiedostoon. | lisätään yleensä versionhallinnan ohituksiin, kuten ''.gitignore''-tiedostoon. | ||
Esimerkki ''.gitignore''-tiedostosta. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
venv/ | venv/ | ||
| Rivi 186: | Rivi 210: | ||
== Kehitystyökalut == | == Kehitystyökalut == | ||
* | * [[VS Code]] – laaja Python-tuki | ||
* | * [[PyCharm]] | ||
* | * [[Geany]] | ||
* | * [[Kate]], [[Gedit]], [[Mousepad]] | ||
* | * [[IDLE]] – Pythonin mukana tuleva editori | ||
== Katso myös == | == Katso myös == | ||
Nykyinen versio 8. tammikuuta 2026 kello 12.15
| Python | |
|---|---|
| Paradigma | oliopohjainen |
| Tyypitys | vahva, staattinen |
| Evaluointitapa | innokas |
| Suoritusmalli | tulkattava |
| Muistinhallinta | automaattinen |
| Tekijä(t) | Python Software Foundation |
| Kehittäjä(t) | Guido van Rossum |
| Ensijulkaisu | 0.9.0 / helmmikuuta 1991 |
| Vakaa versio | 3.10.4 / 24. maaliskuuta 2022 |
| Kehitysversio | 3.11.0a6 / 7. maaliskuuta 2022 |
| Tyyppi | ohjelmointikieli, kehitystyökalut |
| Lisenssi | GPL [1] |
| Kotisivu | python.org |
| Lähdekoodi | github.com/python |
Python on korkean tason, tulkattava ja moniparadigmainen ohjelmointikieli, joka soveltuu niin komentoriviskripteihin, automaatioon, palvelinohjelmointiin, tieteelliseen laskentaan kuin graafisiin sovelluksiin. Python on erityisen suosittu Linux-järjestelmissä, ja monet jakelut sisältävät sen valmiiksi.
Pythonin kehitystä johtaa Python Software Foundation ja kielen alkuperäinen kehittäjä on Guido van Rossum.
Ominaisuudet
[muokkaa]- Tulkattava ja dynaamisesti tyypitetty
- Moniparadigmainen (olio-, funktio- ja proseduraalinen ohjelmointi)
- Laaja standardikirjasto
- Selkeä syntaksi ja luettavuus
- Laajennettavissa tuhansilla lisäkirjastoilla (PyPI)
- Erinomainen tuki Linux-ympäristöissä
Python Linuxissa
[muokkaa]Asennus
[muokkaa]Useimmissa Linux-jakeluissa Python 3 on valmiina. Tarvittaessa sen voi asentaa:
Debian/Ubuntu
sudo apt install python3 python3-pip
Fedora
sudo dnf install python3 python3-pip
Arch Linux
sudo pacman -S python python-pip
Python-tulkin käyttö
[muokkaa]Interaktiivinen tulkki:
python3
>>> print("Hei Linux.fi!")
Python-tiedoston suorittaminen:
#!/usr/bin/env python3
print("Hei!")
Ohjelmalle on annettava suoritusoikeudet.
chmod +x ohjelma.py
./ohjelma.py
Standardikirjasto
[muokkaa]Pythonin mukana tulee laaja ja monipuolinen standardikirjasto, joka kattaa tiedostojen käsittelyn, prosessit, verkon, tietotyypit, sarjallistamisen, komentorivityökalut ja paljon muuta. Alla on yleisesti käytettyjä ja Linux-ympäristössä hyödyllisiä moduuleita ryhmiteltynä aihealueittain.
Tiedostot ja käyttöjärjestelmä
[muokkaa]- os – käyttöjärjestelmän palvelut, tiedostot, prosessit ja ympäristömuuttujat
- pathlib – tiedostopolkujen käsittely oliopohjaisesti (suositeltava vaihtoehto os.path-moduulille)
- shutil – tiedostojen ja hakemistojen kopiointi, siirto ja poistaminen
- stat – tiedostojen tilatiedot
- tempfile – väliaikaistiedostot ja -hakemistot
Prosessit ja komentorivi
[muokkaa]- sys – Python-tulkin asetukset ja komentoriviparametrit
- argparse – komentoriviparametrien käsittely
- subprocess – ulkoisten komentojen suorittaminen
- logging – lokitus ja diagnostiikka
- venv – virtuaaliympäristöjen luonti
Aika ja päivämäärät
[muokkaa]- time – ajanotto, viiveet ja aikaleimat
- datetime – päivämäärät ja kellonajat (suositeltavampi ja monipuolisempi kuin time)
- calendar – kalenteritoiminnot
Data, tietotyypit ja sarjallistaminen
[muokkaa]- json – JSON-tiedostojen käsittely
- pickle – Python-olioiden sarjallistaminen ja tallennus
- csv – CSV-tiedostojen luku ja kirjoitus
- sqlite3 – sisäänrakennettu SQLite-tietokanta
- dataclasses – helppo tapa määritellä tietorakenteita (Python 3.7+)
Matematiikka ja satunnaisuus
[muokkaa]- math – matemaattiset funktiot ja laskutoimitukset
- statistics – perus tilastolliset laskut
- random – satunnaislukujen generointi ja arvonnat
- fractions – rationaaliluvut
- decimal – tarkka desimaalilaskenta
Verkko ja protokollat
[muokkaa]- socket – matalan tason verkkoyhteydet
- http.client – HTTP-yhteydet
- urllib – URL-käsittely ja verkkopyynnöt
- ipaddress – IPv4- ja IPv6-osoitteiden käsittely
Pakkaus ja arkistointi
[muokkaa]- zipfile – ZIP-pakettien luonti ja purku
- tarfile – TAR-arkistot
- gzip – gzip-pakkaus
Graafiset käyttöliittymät
[muokkaa]- tkinter – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto
Suositut lisäkirjastot
[muokkaa]- requests – HTTP-kyselyt
- numpy, scipy – numeerinen laskenta
- pandas – taulukkomuotoinen data
- matplotlib, seaborn – visualisointi
- pytest – testaus
- pygame – peliohjelmointi
- PyQt, GTK (PyGObject) – graafiset käyttöliittymät
- pytorch, tensorflow – koneoppiminen
Suositut graafiset käyttöliittymät
[muokkaa]Pythonilla voidaan toteuttaa graafisia käyttöliittymiä useilla eri kirjastoilla. Linux-ympäristöissä suosituimpia ovat:
- GTK (PyGObject) – GNOME-ympäristön käyttämä kirjasto; hyvä valinta natiivin Linux-sovelluksen rakentamiseen.
- Qt (PyQt / PySide) – monialustainen ja laaja käyttöliittymäkirjasto, joka soveltuu sekä kevyisiin että vaativiin sovelluksiin.
- Tkinter – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto, joka on helppo aloittelijoille ja pieniin työkaluihin.
- customtkinter – Tkinterin modernisoitu versio, joka tarjoaa tumman teeman, nykyaikaiset widgetit ja paremman ulkoasun ilman ulkoisia riippuvuuksia.
- Kivy – suunniteltu kosketusnäytöille ja monialustaisiin sovelluksiin (Linux, Windows, Android, iOS).
- wxPython – natiivikomponentteja hyödyntävä kirjasto, joka toimii hyvin useilla alustoilla.
- Dear PyGui – moderni ja nopea Immediate Mode -käyttöliittymäkirjasto, joka soveltuu erityisesti työkaluohjelmiin ja visualisointeihin.
- LexGUI (lex) – kevyt ja moderni käyttöliittymäkirjasto, joka tarjoaa yksinkertaisen API:n ja tyylikkään ulkoasun; sopii pieniin työkaluihin ja prototyyppeihin.
- Flet – moderni ja monialustainen käyttöliittymäkirjasto, joka mahdollistaa web-, desktop- ja mobiilisovellusten rakentamisen Pythonilla ilman HTML-, CSS- tai JavaScript-osaamista. Sovellukset käyttävät Flutterin komponentteja, ja ne voidaan ajaa paikallisesti tai palvelimelta käsin.
Nämä kirjastot ovat saatavilla useimpien Linux-jakeluiden pakettivarastoista tai Pythonin pakettivarastosta (PyPI).
Virtuaaliympäristön luominen ja käyttö
[muokkaa]Virtuaaliympäristö (virtual environment, venv) on Pythonin työkalu, jolla projektikohtaiset kirjastot ja riippuvuudet voidaan eristää muusta järjestelmästä. Tämä on erityisen tärkeää Linux-järjestelmissä, joissa jakelun omat Python-paketit voivat olla eri versioisia kuin kehityksessä tarvittavat.
Virtuaaliympäristöjen käyttö on suositeltavaa, koska: Projektit pysyvät erillään toisistaan – eri projektit voivat käyttää eri versioita samoista kirjastoista ilman ristiriitoja.
- Järjestelmän Python pysyy puhtaana – järjestelmän omia työkaluja (esim. paketinhallinta) ei rikota asentamalla globaaleja paketteja.
- Toistettavuus paranee – projektin riippuvuudet voidaan määritellä tarkasti (esim. requirements.txt), mikä helpottaa kehitystä ja julkaisemista.
- Turvallisuus paranee – eristetty ympäristö vähentää riskiä, että kolmannen osapuolen kirjastot vaikuttaisivat järjestelmätasoisiin komentoihin tai palveluihin.
Virtuaaliympäristö luodaan komennolla::
python3 -m venv venv
Tämä luo hakemiston venv, joka sisältää projektikohtaisen Python-tulkin ja kirjastot. Virtuaaliympäristö otetaan käyttöön aina ennen projektin komentoja:
source venv/bin/activate
Kun ympäristö on aktivoitu, komentorivin alkuun ilmestyy yleensä ympäristön nimi (esimerkiksi (venv)), ja kaikki pip-asennukset kohdistuvat vain tähän ympäristöön.
Virtuaaliympäristö poistetaan käytöstä komennolla:
deactivate
Virtuaaliympäristö kannattaa pitää versionhallinnan ulkopuolella, koska se sisältää paljon automaattisesti generoituja tiedostoja ja riippuvuuksia, jotka voidaan uudelleen luoda tarpeen mukaan. Ympäristön hakemisto (esimerkiksi venv) lisätään yleensä versionhallinnan ohituksiin, kuten .gitignore-tiedostoon.
Esimerkki .gitignore-tiedostosta.
venv/
__pycache__/
Python Linux-järjestelmätyökaluissa
[muokkaa]Pythonia käytetään laajasti Linux-työkaluissa ja infrastruktuurissa, kuten:
- Ansible
- Useat jakelujen paketinhallintaskriptit
- GNOME- ja KDE-projektien apuohjelmat
- Järjestelmänhallinnan komentorivityökalut
Kehitystyökalut
[muokkaa]- VS Code – laaja Python-tuki
- PyCharm
- Geany
- Kate, Gedit, Mousepad
- IDLE – Pythonin mukana tuleva editori
Katso myös
[muokkaa]Aiheesta muualla
[muokkaa]| | |
| Käännettävät | Assembly | C | C++ | Go | Haxe | Haskell | Java | Pascal |
|---|---|
| Tulkattavat | Python | Perl | PHP | Ruby |
| -skriptikielet | Lua | Bash |
| GPGPU | OpenCL |
| muut | GLSL |