Ero sivun ”Python” versioiden välillä

Siirry navigaatioon Siirry hakuun
Vähän suurempi päivitys
 
(7 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
Debian/Ubuntu
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo apt install python3 python3-pip
sudo apt install python3 python3-pip
</syntaxhighlight>
</syntaxhighlight>


; Fedora
Fedora
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo dnf install python3 python3-pip
sudo dnf install python3 python3-pip
</syntaxhighlight>
</syntaxhighlight>


; Arch Linux
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 valikoima moduuleita. Hyödyllisiä Linux-käytössä:
Pythonin mukana tulee laaja ja monipuolinen standardikirjasto, joka kattaa
* '''os''' käyttöjärjestelmätoiminnot
tiedostojen käsittelyn, prosessit, verkon, tietotyypit, sarjallistamisen,
* '''sys''' – tulkin asetukset ja argumentit
komentorivityökalut ja paljon muuta. Alla on yleisesti käytettyjä ja
* '''pathlib''' tiedostopolut oliopohjaisesti
Linux-ympäristössä hyödyllisiä moduuleita ryhmiteltynä aihealueittain.
* '''subprocess''' – ulkoisten komentojen suorittaminen
 
* '''json''' – JSON-tiedostojen käsittely
=== Tiedostot ja käyttöjärjestelmä ===
* '''argparse''' komentoriviparametrit
* <tt>os</tt> – käyttöjärjestelmän palvelut, tiedostot, prosessit ja ympäristömuuttujat
* '''logging''' lokitus
* <tt>pathlib</tt> tiedostopolkujen käsittely oliopohjaisesti (suositeltava vaihtoehto <tt>os.path</tt>-moduulille)
* '''venv''' virtuaaliympäristöt
* <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
* requests – HTTP-kyselyt
* '''numpy''', '''scipy''' – numeerinen laskenta
* numpy, scipy – numeerinen laskenta
* '''pandas''' – taulukkomuotoinen data
* pandas – taulukkomuotoinen data
* '''matplotlib''', '''seaborn''' – visualisointi
* matplotlib, seaborn – visualisointi
* '''pytest''' – testaus
* pytest – testaus
* '''pygame''' – peliohjelmointi
* pygame – peliohjelmointi
* '''PyQt''', '''GTK (PyGObject)''' – graafiset käyttöliittymät
* PyQt, GTK (PyGObject) – graafiset käyttöliittymät
* '''pytorch''', '''tensorflow''' – koneoppiminen
* 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.
  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.
  soveltuu sekä kevyisiin että vaativiin sovelluksiin.
* 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).
  helppo aloittelijoille ja pieniin työkaluihin.
* 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.
  nykyaikaiset widgetit ja paremman ulkoasun ilman ulkoisia riippuvuuksia.
* 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.
  (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,  
  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  
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,  
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ää  
Projektit pysyvät erillään toisistaan – eri projektit voivat käyttää eri versioita samoista kirjastoista ilman ristiriitoja.
  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.
  (esim. paketinhallinta) ei rikota asentamalla globaaleja paketteja.
* 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ä  
  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::
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.


Esimmerkki ''.gitignore''-tiedostosta.
Esimerkki ''.gitignore''-tiedostosta.
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
venv/
venv/
Rivi 186: Rivi 210:


== Kehitystyökalut ==
== Kehitystyökalut ==
* '''[[VS Code]]''' – laaja Python-tuki
* [[VS Code]] – laaja Python-tuki
* '''[[PyCharm]]'''
* [[PyCharm]]
* '''[[Geany]]'''
* [[Geany]]
* '''[[Kate]]''', '''[[Gedit]]''', '''[[Mousepad]]'''
* [[Kate]], [[Gedit]], [[Mousepad]]
* '''[[IDLE]]''' – Pythonin mukana tuleva editori
* [[IDLE]] – Pythonin mukana tuleva editori


== Katso myös ==
== Katso myös ==
Noudettu kohteesta ”https://www.linux.fi/wiki/Python