ID.nl logo
Zo kun je programmeren in Python - Deel 9
© PXimport
Huis

Zo kun je programmeren in Python - Deel 9

Je kunt nu al goed overweg met allerlei aspecten van Python, maar naast de standaardbibliotheek van Python bestaan er nog heel wat extra modules. In deze les leer je hoe je deze installeert en hoe je met virtuele omgevingen werkt om met conflicterende vereisten van modules om te gaan.

Basisfunctionaliteit die bijna iedereen nodig heeft, zit in de standaardbibliotheek van Python. In les 6 zag je al hoe je toegang tot deze functionaliteit krijgt met de opdracht import en toonden we je kort enkele standaardmodules. Maar in die les schreef je ook je eigen module. Deze les gaat volledig over het installeren van extra modules die anderen geschreven hebben.

Pakketten vinden op PyPI

Iedereen kan zelf een Python-module maken, zoals je in les 6 zelf ook hebt gedaan. Python biedt een centrale repository aan met modules die je eenvoudig kunt installeren en in je eigen Python-programma’s kunt gebruiken: de Python Package Index of afgekort PyPI. Je vindt ze op de website www.pypi.org.

PyPI bevat meer dan 170.000 projecten, die pakketten worden genoemd. Een pakket bevat één of meerdere Python-modules. Je zoekt op de website van PyPI op trefwoorden om pakketten te vinden die je in je code kunt gebruiken. Maar het kan nog eenvoudiger op de opdrachtregel van je besturingssysteem met het programma pip3, dat deel uitmaakt van Python. Zo zoek je met de volgende opdracht naar pakketten:

pip3 search <zoekterm>

Je krijgt dan een lijst te zien met pakketnamen en een korte beschrijving van één regel waarin je zoekterm voorkomt. Wil je meer informatie over het pakket lezen, dan zul je de pagina voor het pakket op de website van PyPI moeten raadplegen, waar een uitgebreidere beschrijving staat, inclusief een link naar de website van het pakket.

Een pakket installeren met pip3

Heb je eenmaal een pakket gevonden dat je wilt gebruiken, dan installeer je het ook eenvoudig met pip3:

pip3 install urllib3

Na de installatie van een pakket kun je meer informatie over het pakket opvragen met:

pip3 show urllib3

Naast de korte beschrijving en het versienummer van het geïnstalleerde pakket, krijg je ook de website en de licentie te zien.

Geïnstalleerde module in je Python-code gebruiken

Nadat je een pakket geïnstalleerd hebt met pip3, kun je de modules erin gebruiken, net zoals de standaardmodules van Python. Voor het voorbeeld van urllib3:

>>> import urllib3

>>> http = urllib3.PoolManager()

>>> r = http.request('GET', 'http://reshift.nl/robots.txt')

>>> r.status

200

>>> r.data

b'User-agent: *\nDisallow: /wp-admin/\nAllow: /wp-admin/admin-ajax.php\n'

Na de installatie van een pakket maakt het dus niet meer uit of de module in de standaardbibliotheek zit of niet. Voordat je een module in je eigen code gebruikt, dien je wel na te kijken wat de licentie van het project je toelaat. Maar omdat de meeste Python-pakketten een opensource-licentie gebruiken, zal het gebruik niet snel problematisch zijn.

Het nut van virtuele omgevingen

Als je veel Python-pakketten installeert met pip3, kom je wellicht een keer in de problemen. Pakketten importeren immers ook andere pakketten die ze gebruiken, die noemen we ‘afhankelijkheden’. Maar misschien installeert pakket A versie 1.0 van pakket Z en installeert pakket B de met versie 1.0 incompatibele versie 2.0 van pakket Z. Het gevolg? Na de installatie van pakket B werkt pakket A niet meer, want je kunt maar één versie van een Python-pakket installeren.

Gelukkig heeft Python voor deze problemen een oplossing: virtuele omgevingen. Een virtuele omgeving is een directory op je computer waarin je Python-pakketten installeert in de plaats van in je globale Python-pakketdirectory. Deze virtuele omgeving is volledig gescheiden van andere virtuele omgevingen en van de globale Python-pakketdirectory. Als je dan voor elk Python-project dat je wilt installeren of ontwikkelen een nieuwe virtuele omgeving aanmaakt, ben je zeker dat je door de installatie van de pakketten die je nodig hebt geen van je andere projecten doet falen.

Virtuele omgeving opzetten met venv

Een virtuele omgeving opzetten, doe je in Python met de module venv:

python3 -m venv C:\pad\naar\mijnomgeving

Dit maakt de opgegeven directory (en eventuele bovenliggende directory’s die nog niet bestaan) en maakt verwijzingen naar de Python-interpreter en een lege directory voor pakketten.

Om nu de virtuele omgeving te gebruiken, moet je ze eerst ‘activeren’. Dat doe je als volgt:

C:\pad\naar\mijnomgeving\Scripts\activate.bat

Als je nu met pip3 pakketten installeert, worden ze in de virtuele omgeving geïnstalleerd en niet in je globale Python-pakketbibliotheek. De virtuele omgeving verlaten doe je met de opdracht deactivate. Je werkt dan weer in je globale Python-omgeving. Je kunt nu een andere virtuele omgeving opzetten of een virtuele omgeving die je al hebt aangemaakt activeren. Zo schakel je eenvoudig tussen verschillende projecten over zonder dat de installatie van Python-pakketten in de ene omgeving een impact heeft op een andere omgeving.

Virtuele omgeving in macOS en Linux

De Python-module venv werkt net iets anders in andere besturingssystemen. De directory Scripts heet in macOS en Linux bin, en Lib (met hoofdletter L) heet lib (helemaal in kleine letters). Bovendien activeer je de virtuele omgeving niet met een batchbestand zoals in Windows, maar met een shellscript, dat geen extensie .bat heeft, en dat activeren doe je met de opdracht source. De virtuele omgeving van een omgeving activeren doe je onder macOS en Linux dus met de opdracht: source mijnomgeving/bin/activate.

Afhankelijkheden opslaan en opnieuw installeren

Als je project veel afhankelijkheden gebruikt en je die allemaal in een virtuele omgeving hebt geïnstalleerd met pip3, wil je natuurlijk dat iemand anders die je code draait zo eenvoudig mogelijk al die pakketten kan installeren. Gelukkig kun je eenvoudig een lijst aanmaken met alle in de virtuele omgeving geïnstalleerde pakketten en hun versies:

pip3 freeze > requirements.txt

Het bestand requirements.txt bevat dan voor elk geïnstalleerd pakket in de virtuele omgeving een regel:

pakketnaam==versienummer

Daarna kan de andere gebruiker op zijn computer een virtuele omgeving aanmaken en je Python-code daarin kopiëren. Die code zal nog niet werken, want de afhankelijkheden zijn nog niet geïnstalleerd. Maar als je het bestand requirements.txt samen met je code verspreidt, hoeft de gebruiker maar één opdracht uit te voeren in de virtuele omgeving om alle afhankelijkheden te installeren:

pip3 install -r requirements.txt

Daarna ben je zeker dat jouw code ook op de andere computers werkt, tenminste als ook jullie Python-versies hetzelfde zijn. De afhankelijkheden zijn immers hetzelfde en van dezelfde versies.

Als je de versienummers van je afhankelijkheden niet wilt vastleggen, kun je deze in het bestand requirements.txt weglaten, samen met de aanduiding ==. Je vermeldt dan alleen de pakketnamen. Deze opdracht installeert dan de nieuwste versie van de opgegeven pakketten:

pip3 install -r requirements.txt

Samenvatting

In deze les heb je geleerd hoe je extra pakketten opzoekt in de Python Package Index en hoe je ze installeert met pip3. Je leerde ook met virtuele omgevingen werken en de afhankelijkheden van je projecten opslaan, zodat je ze later eenvoudig weer kunt installeren in een nieuwe virtuele omgeving. Hiermee komen we bijna aan het einde van onze lessenreeks voor beginners. In de laatste les gaan we een volledig Python-script ontwikkelen dat je op de opdrachtregel kunt uitvoeren.

Opdracht

Installeer de module arrow in je globale Python-omgeving en controleer of je ze kunt importeren. Maak dan een nieuwe virtuele omgeving en verifieer dat de module arrow daar niet beschikbaar is. Installeer daarna ook arrow in je virtuele omgeving, zodat je de module daar kunt importeren.

Uitwerking

pip3 install arrow python3 -c 'import arrow' Na de installatie van arrow met pip3 kun je de Python-interpreter opstarten en daar import arrow intypen, maar met de optie -c kun je ook rechtstreeks Python-opdrachten als argumenten aan de Python-interpreter doorgeven, wat hier handig is om snel te controleren of we de module arrow kunnen importeren. Maak daarna een nieuwe virtuele omgeving en activeer ze: python3 -m venv C:\pad\naar\mijnomgeving C:\pad\naar\mijnomgeving\Scripts\activate.bat Als we nu de module arrow willen importeren met deze opdracht: python3 -c 'import arrow' Dan krijgen we een foutmelding: Traceback (most recent call last): *File "

Cheatsheet

Afhankelijkheden: de pakketten die een stukje Python-software nodig heeft voor zijn werking. Bibliotheek: een verzameling code die bedoeld is om door andere programma’s gebruikt te worden. Pakket: een verzameling van een of meerdere Python-modules. Repository: een online opslagplaats met pakketten. Softwarelicentie: een vergunning om een computerprogramma te gebruiken, vaak onder specifieke voorwaarden. Standaardbibliotheek: alle modules die bij een standaardinstallatie van Python beschikbaar zijn. Virtuele omgeving: een directory met een afgescheiden installatie van Python en Python-modules.

▼ Volgende artikel
Hoe gebruik je AirPods en een Apple TV om films in surround te beleven?
© apple.com
Huis

Hoe gebruik je AirPods en een Apple TV om films in surround te beleven?

De Apple AirPods zijn razend populaire draadloze oordoppen, de Apple TV is dan weer een geslaagde mediaspeler. Voeg de twee samen en je kunt films, tv-series en games beleven in meeslepend 3D-ruimtelijke audio. Dit is hoe je dat doet!

Ruimtelijke audio gebruiken met je Apple TV? In dit artikel leggen we je het uit en:

  • Wat kun je verwachten van Ruimtelijke audio?
  • Wat heb je daarvoor nodig?
  • Hoe stel je Ruimtelijke audio op een Apple TV in?
  • Bij welke apps en streamingdiensten kan dat?
  • Hoe kun je alles personaliseren met je iPhone?

In dit artikel hebben we het over de Ruimtelijke audio-ervaring die je kunt beleven als je bepaalde oordoppen of koptelefoons aan een Apple TV koppelt. Het is enorm indrukwekkend, met geluidseffecten die driedimensionaal rond je worden afgespeeld. Net als in de bioscoop, maar dan bij je thuis. Het werkt even goed of beter dan een soundbar, en is ideaal voor wie alleen tv-kijkt en echt ondergedompeld wil worden in de actie.

Wat kun je verwachten?

Ruimtelijke audio is niet helemaal hetzelfde als Dolby Atmos en ander surroundgeluid. Maar het doel is wel hetzelfde: jezelf onderdompelen in een geluidsbubbel waarbij bijvoorbeeld geluidseffecten van een film 360 graden om je heen te horen zijn. De AirPods voegen daar bovendien headtracking aan toe, waarbij het geluid aan het scherm wordt 'verankerd'. Hierdoor blijven onder meer dialogen altijd uit het beeld komen, wat de kijkervaring realistischer maakt.

Wat heb je nodig?

Ruimtelijke audio (of Spatial Audio) is een Apple-technologie voor hoofdtelefoons die ingebouwd is in de AirPods 3, AirPods 4 (beide modellen) en alle AirPods Pro. Ook de over-ear AirPods Max-hoofdtelefoon is ermee uitgerust. Ruimtelijke audio is er ook bij de Beats Fit Pro, de Beats Studio Pro of de Beats Solo 4. Je hebt dus een van deze toestellen nodig. Om het eenvoudig te houden, spreken we verder in dit artikel alleen over 'AirPods'.

©Apple

Daarnaast moet je beschikken over een Apple TV 4K (alle versies); de nagenoeg identieke Apple TV HD is helaas niet geschikt. Hier ontdek je hoe je het verschil kunt zien. De Ruimtelijke audio-functie is al even beschikbaar, maar voor alle veiligheid kun je via de Instellingen het best even je Apple TV updaten naar de nieuwste versie van tvOS.

©Jamie Biesemans

Hoe moet je alles instellen?

Apple heeft het heel eenvoudig gemaakt om je AirPods met een Apple TV te verbinden. Schakel eerst de Apple-mediaspeler in. Als het hoofdscherm alle apps toont, open je het doosje van je AirPods (of schakel je de hoofdtelefoon in). Bijna onmiddellijk verschijnt er in de bovenhoek een melding. Druk je op de knop met het tv-icoon, dan wordt het geluid van je Apple TV afgespeeld via je oortjes of koptelefoon. Ben je net te laat om de melding te bevestigen? Dan druk je lang op de tv-knop op de Apple-remote en kies je Audio. Hier zie je een lijst van AirPlay-speakers én als het goed is ook je AirPods. 

©Apple

Ruimtelijke audio wordt standaard ingeschakeld. Maar als je zelf in de opties wilt duiken, dan kan dat. Druk opnieuw lang op de tv-knop en klik op het pictogram van de hoofdtelefoon of oortjes (net rechts van de klok). Je ziet dan verschillende opties in een lijst, terwijl de content verder speelt. Zo kun je ook tijdens het bekijken van een film ruisonderdrukking of gespreksdetectie instellen. Iets lager zie je een pictogram van de actieve app (bijvoorbeeld Netflix of Disney+) en in welke kwaliteit audio wordt aangeleverd (bijvoorbeeld Dolby Atmos). Je kunt dan Ruimtelijke audio instellen, met of zonder headtracking. De optie Vast wil zeggen dat je ruimtelijke audio krijgt zonder hoofdtracking. 

©Jamie Biesemans

Welke apps bieden Ruimtelijke audio? 

Niet alle apps en diensten ondersteunen Ruimtelijke audio, maar de meerderheid wél. Nagenoeg alle streamingdiensten, waaronder Netflix, HBO Max en Disney+, bieden deze optie. Via Apple Music op je Apple TV kun je ook veel muziek in surround beleven. Daarnaast zijn er games die het ondersteunen, wat heel fijn werkt. Is de audio die de app levert toch in stereo (bijvoorbeeld oudere muziek), dan kun je nog altijd van ruimtelijke audio genieten door in de Instellingen te kiezen voor Maak stereo ruimtelijk.

©Apple

Zo personaliseer je Ruimtelijke audio

Om geluid realistisch om je heen te creëren, gebruikt het algoritme achter de Ruimtelijke audio-functie een model van het hoofd van een mens. Dat werkt meestal prima. Maar je kunt de ervaring nog natuurlijker maken door het algoritme informatie te geven over jezelf (onder meer over je hoofd- en oorvorm). Dat gebeurt via beelden gemaakt met een TrueDepth-camera. Zo'n camera vind je op recente iPhones (vanaf de iPhone X) waarop minstens iOS 16 draait. 

Het instellen kan dus niet met een iPad of Mac, maar je kunt het persoonlijke profiel dat je creëert op een iPhone wel toepassen op andere Apple-toestellen. Ook de Apple TV. Dit profiel wordt enkel gedeeld tussen jouw apparaten; volgens Apple wordt het bestand versleuteld en niet met het bedrijf gedeeld.

Het instellen van Gepersonaliseerde ruimtelijke audio doe je door de Instellingen op een geschikte iPhone te openen. Tik op je AirPods of AirPods Pro. Ook de Beats Fit Pro, Beats Solo 4 of Beats Studio Pro zijn compatibel met deze functie. Je ziet vervolgens de optie Gepersonaliseerde ruimtelijke audio. Selecteer dit en kies daarna Personaliseer ruimtelijke audio. Er verschijnt een stappenplan waarbij gevraagd wordt om je gezicht op een afstand van 30 cm in beeld te brengen. Daarna moet je langzaam je hoofd heen en weer bewegen om een afbeelding te maken van je oren. Het klinkt misschien wat merkwaardig, maar met deze informatie kan het Ruimtelijke audio-algoritme een betere inschatting maken van hoe je exact hoort.

▼ Volgende artikel
Tuinonderhoud in januari? Zeker – en dit kun je allemaal doen!
© Annette L. Pyrah
Huis

Tuinonderhoud in januari? Zeker – en dit kun je allemaal doen!

In januari lijkt de tuin in winterslaap, maar schijn bedriegt. Dit is juist het moment om je tuin voor te bereiden op een prachtig voorjaar. Van snoeien tot het maken van een beplantingsplan en het verzorgen van overwinterende planten: er is genoeg te doen. Met een paar slimme klussen leg je de basis voor een gezonde en mooie tuin.

📅 Dit doe je in de tuin in januari:

  • Een beplantingsplan maken
  • Winterplanten planten
  • De overwinterende planten in de garage of schuur verzorgen
  • Bomen, struiken en planten snoeien
  • Sneeuw verwijderen uit de haag en de bestrating onkruidvrij maken

Wil je weten wat je in de andere maanden van het jaar in de tuin te doen hebt? Check dan onze tuinkalender!

Nu doen, voor de zomer: beplantingsplan maken

Januari is de maand om al na te denken over een mooie, bloeiende tuin in de zomer. Maak nu dus een beplantingsplan om te bepalen waar je waar wat gaat zaaien en planten. Denk daarbij ook aan de laatbloeiers, zodat je in het najaar ook nog kleur in de tuin hebt.

Beschermen tegen vorst en kleur aanbrengen

Om de planten te beschermen tegen vrieskou, leg je een laag compost, bladeren en takken op de grond. Daarmee zorg je ervoor dat de wortels van de planten niet zo snel bevriezen. Gelukkig vriest het in januari niet doorlopend. Tijdens zo'n vorstvrije periode kun je mooi bomen, hagen en struiken planten. Wil je gelijk al wat kleur aanbrengen in de tuin? Plant dan winterheide of zet winterharde viooltjes in plantenbakken of in de borders.

©Erkki Makkonen

🌺 Winterviolen!

(daar fleurt elke wintertuin van op)

Overwinterende planten verzorgen

Kuipplanten die in de schuur of garage overwinteren, hebben regelmatig water nodig. Bij vorstvrij weer kun je een raam of deur openen voor wat frisse lucht. Ook bollen in pot, binnen of buiten, geef je af en toe water om uitdroging te voorkomen.

Een echte winterklus: snoeien!

Januari en februari zijn ideale maanden om fruitbomen, planten en struiken te snoeien, zoals knotwilgen en leilindes. Zo bereid je ze voor op het voorjaar. Snoei alleen bij zacht, vorstvrij weer. Heb je een druif? Snoei die uiterlijk half januari, want daarna komt de sapstroom op gang en kan de plant doodbloeden als je te laat snoeit.

Lees ook: Welke snoeischaar voor welke snoeiklus?

Wist je dat je als boomeigenaar een zorgplicht voor de bomen in je tuin hebt? Dit betekent dat je aansprakelijk bent voor schade of letsel als er takken uit jouw boom vallen, of als je boom omvalt. Het is dus van groot belang om de boom in goede conditie te houden en dit doe je met een goede snoeizaag.

©natalialeb

Onkruidvrije bestrating

Heeft het gesneeuwd? Neem dan even de tijd om de sneeuw te schudden uit de groenblijvers , zoals de hagen. Hierdoor voorkom je dat er grote gaten in de haag ontstaan. En als laatste: het is nu een goede tijd om de voegen van de bestrating onkruidvrij te maken. Is de bestrating wat ingezakt? Dit is een goed moment om de tegels en klinkers wat om te hogen, om wateroverlast te voorkomen. Een drainage aanleggen helpt ook tegen wateroverlast.

Lees ook: Zelf een terras aanleggen? Dit is waar je op moet letten