24 Python-bibliotheken voor elke Python-ontwikkelaar

Wil je een goede reden voor het geweldige succes van de programmeertaal Python? Zoek niet verder dan de enorme verzameling bibliotheken die beschikbaar is voor Python, zowel native bibliotheken als bibliotheken van derden. Met zoveel Python-bibliotheken die er zijn, is het echter geen verrassing dat sommige niet alle aandacht krijgen die ze verdienen. Bovendien weten programmeurs die uitsluitend in één domein werken, niet altijd de goodies die voor hen beschikbaar zijn voor andere soorten werk.

Hier zijn 24 Python-bibliotheken die u misschien over het hoofd hebt gezien, maar die zeker uw aandacht waard zijn. Deze edelstenen zijn zeer nuttig en vereenvoudigen alles, van toegang tot het bestandssysteem, databaseprogrammering en het werken met cloudservices tot het bouwen van lichtgewicht webapps, het maken van GUI's en het werken met afbeeldingen, e-boeken en Word-bestanden, en nog veel meer. Sommige zijn bekend, andere minder bekend, maar al deze Python-bibliotheken verdienen een plaats in je gereedschapskist.

Apache Libcloud

Wat Libcloud doet: toegang tot meerdere cloudproviders via één consistente, uniforme API.

Waarom Libcloud gebruiken: Als de bovenstaande beschrijving van Apache Libcloud je niet in je handen laat klappen van vreugde, dan heb je niet geprobeerd om met meerdere clouds te werken. Cloudproviders houden er allemaal van om dingen op hun manier te doen, waardoor een uniform mechanisme voor het omgaan met tientallen providers een enorme tijdsbesparing en hoofdpijn is. Er zijn API's beschikbaar voor compute, storage, load balancing en DNS, met ondersteuning voor Python 2.x en Python 3.x, evenals PyPy, de prestatiebevorderende JIT-compiler voor Python.

Pijl

Wat Arrow doet: schonere verwerking van datums en tijden in Python.

Waarom Arrow gebruiken: Omgaan met tijdzones, dataconversies, datumnotaties en al de rest is al anderhalve hoofdpijn. Gooi in de standaardbibliotheek van Python voor datum / tijd-werk, en je krijgt twee hoofdpijn en een half.

Arrow biedt vier grote voordelen. Ten eerste is Arrow een drop-in vervanging voor de datetime-module van Python, wat betekent dat algemene functieaanroepen zoals .now()en .utcnow()werken zoals verwacht. Ten tweede biedt Arrow methoden voor veelvoorkomende behoeften, zoals het verschuiven en converteren van tijdzones. Ten derde biedt Arrow "gehumaniseerde" datum / tijd-informatie - zoals het kunnen zeggen dat iets "een uur geleden" is gebeurd of zal gebeuren "over twee uur" zonder veel moeite. Ten vierde kan Arrow de datum / tijd-informatie lokaliseren zonder zweten.

Zie

Wat Behold doet:  Robuuste ondersteuning voor foutopsporing in afdrukstijl in Python.

Waarom Behold gebruiken:  Er is een eenvoudige manier om fouten op te sporen in Python, of bijna elke programmeertaal: voeg in-line printstatements in. Maar hoewel foutopsporing bij afdrukken een no-brainer is in kleine programma's, is het niet zo eenvoudig om bruikbare resultaten te krijgen binnen grote, uitgestrekte projecten met meerdere modules.

Behold biedt een toolkit voor contextuele foutopsporing via gedrukte verklaringen. Hiermee kunt u de uitvoer een uniform uiterlijk geven, de resultaten taggen zodat ze kunnen worden gesorteerd via zoekopdrachten of filters, en contexten bieden tussen modules, zodat functies die afkomstig zijn van de ene module correct kunnen worden opgespoord in een andere. Behold verwerkt veel gangbare Python-specifieke scenario's, zoals het afdrukken van het interne woordenboek van een object, het onthullen van geneste attributen en het opslaan en hergebruiken van resultaten voor vergelijking op andere punten tijdens het foutopsporingsproces.

Zwart

Wat Black doet: Formatteert Python-code volgens een strikte en bijna totaal onveranderlijke set regels.

Waarom zwart gebruiken:  Python-codeformatters, zoals YAPF, hebben meestal veel configureerbare opties: regellengte, opties voor het splitsen van regels, afhandeling van volgkomma's, enzovoort. Zwart past een consistente set standaardwaarden toe voor die regels die niet kunnen worden gewijzigd. De resulterende geformatteerde code is zo consistent mogelijk tussen codebases en tussen gebruikers, met zo min mogelijk verschillen tussen bewerkte bestanden.

Zwart is even wennen, vooral als je kieskeurig bent over verticale witruimte, uitspraken met diepe nestings (bijvoorbeeld lijsten in lijsten) en andere opmaakopties. Maar op de lange termijn hoeft u niet meer na te denken over formatteren, zodat u zich kunt concentreren op uw code.

Fles

What Bottle doet: lichtgewicht en snelle webapps.

Waarom Bottle gebruiken: Als je een snelle RESTful API wilt samenstellen of de kale botten van een webframework wilt gebruiken om een ​​app te bouwen, geeft de capabele maar kleine Bottle je niet meer dan je nodig hebt. Routing, sjablonen, toegang tot aanvraag- en responsgegevens, ondersteuning voor meerdere servertypen vanaf gewoon oude CGI en ondersteuning voor meer geavanceerde functies zoals WebSockets - het is er allemaal. De hoeveelheid werk die nodig is om aan de slag te gaan, is eveneens minimaal, en het ontwerp van Bottle is elegant uitbreidbaar wanneer meer geavanceerde functies nodig zijn. 

Klik

Wat Click doet:  Hiermee kunt u snel opdrachtregelinterfaces bouwen voor Python-apps.

Waarom Click gebruiken:  GUI's zijn handig, maar CLI's zijn waar de echte kracht zit. Het bouwen van een robuuste CLI is echter nauwelijks eenvoudig, en de standaardtoolset voor het verzamelen en gebruiken van opdrachtregelopties in Python is primitief.

Click verpakt die stukjes en beetjes in een hoogwaardige CLI-constructie-API. Als u slechts een paar basisopdrachten wilt maken, kunt u dat doen met een paar regels code. Als u geavanceerder gedrag wilt, zoals afzonderlijk vragen om meer informatie over een parameter, of waarden afleiden uit omgevingsvariabelen, dan heeft Click u gedekt. Click ondersteunt ook terminalkleuren via de  colorama bibliotheek en kan worden uitgebreid met plug-ins van derden.

EbookLib

Wat EbookLib doet:  .epub-bestanden lezen en schrijven.

Waarom EbookLib gebruiken: Om e-boeken te maken, moet u meestal een of een ander opdrachtregelprogramma afhandelen  . EbookLib biedt beheertools en API's die het proces vereenvoudigen. Het werkt met EPUB 2- en EPUB 3-bestanden, met Kindle-ondersteuning in ontwikkeling.

Verstrek de afbeeldingen en de tekst (de laatste in HTML-indeling), en EbookLib kan die stukjes samenvoegen tot een e-boek, compleet met hoofdstukken, geneste inhoudsopgave, afbeeldingen, HTML-opmaak, enzovoort. Omslag-, rug- en stijlbladgegevens worden ook allemaal ondersteund. Een plug-insysteem stelt derden in staat het gedrag van de bibliotheek uit te breiden.

Als je niet alles nodig hebt dat EbookLib te bieden heeft, probeer dan Mkepub. Mkepub verpakt de basisfunctionaliteit voor het samenstellen van e-boeken in een bibliotheek die slechts een paar kilobytes groot is. Een klein nadeel van Mkepub is dat het Jinja2 vereist, wat op zijn beurt de MarkupSafe-bibliotheek vereist.

Slissend

Wat Gooey doet:  geef een console-gebaseerd Python-programma een platform-native GUI.

Waarom Gooey  gebruiken : gebruikers, met name gewone gebruikers, een opdrachtregelinterface voorstellen is een van de beste manieren om het gebruik van uw applicatie te ontmoedigen. Weinigen, afgezien van de hardcore nerd, vinden het leuk om uit te zoeken welke opties ze moeten doorgeven en in welke volgorde. Gooey neemt argumenten die worden verwacht door de argparse-bibliotheek en presenteert deze aan gebruikers als een GUI-formulier, via de WxPython-bibliotheek. Alle opties zijn gelabeld en weergegeven met de juiste besturingselementen (zoals een vervolgkeuzelijst voor een meervoudig optie-argument). Er is maar heel weinig extra codering - een enkele include en een enkele decorateur - nodig om het te laten werken, ervan uitgaande dat je al argparse gebruikt.

Beroep doen op

Wat Invoke doet: Pythonische uitvoering op afstand - dwz admin-taken uitvoeren met behulp van een Python-bibliotheek.

Waarom Invoke gebruiken: Python gebruiken als vervanging voor algemene shell-scripttaken is logisch. Invoke biedt een API op hoog niveau voor het uitvoeren van shell-opdrachten en het beheren van opdrachtregeltaken alsof het Python-functies zijn, waardoor je die taken in je eigen code kunt insluiten of er elegant omheen kunt bouwen. Pas alleen op dat niet-vertrouwde invoer ongewijzigd wordt doorgegeven aan shell-opdrachten.

Nuitka

Wat Nuitka doet:  Python compileren in zelfstandige C-uitvoerbare bestanden.

Waarom Nuitka gebruiken:  Net als Cython compileert Nuitka Python in C. Echter, terwijl Cython zijn eigen aangepaste syntaxis vereist voor de beste resultaten en zich voornamelijk richt op wiskundige en statistische toepassingen, werkt Nuitka met elk Python-programma zoals het is, compileert het in C, en produceert een uitvoerbaar bestand met één bestand, waarbij optimalisaties worden toegepast waar mogelijk. Nuitka bevindt zich nog in de beginfase en veel van de geplande optimalisaties moeten nog komen. Desalniettemin is het een handige manier om van een Python-script een snelle opdrachtregel-app te maken.

Numba

Wat Numba doet:  wiskundige intensieve functies selectief versnellen.

Waarom Numba gebruiken:  De Python-wereld bevat een hele subcultuur van pakketten om wiskundige bewerkingen te versnellen. NumPy werkt bijvoorbeeld door high-speed C-bibliotheken in een Python-interface te wikkelen, en Cython compileert Python naar C met optioneel typen voor versnelde prestaties. Maar Numba is gemakkelijk het handigst, omdat het Python-functies selectief kan versnellen met niets meer dan een decorateur. Voor verdere snelheidsverhogingen kunt u algemene Python-idiomen gebruiken om workloads parallel te schakelen, of SIMD- of GPU-instructies gebruiken.

Merk op dat u NumPy met Numba kunt gebruiken. NumPy heeft tenslotte veel out-of-the-box algoritmen die niet helemaal opnieuw hoeven te worden geïmplementeerd. Maar voor kleine "kernel" -algoritmen zal Numba in veel gevallen NumPy vele malen overtreffen.

Openpyxl

Wat Openpyxl doet:  leest, schrijft en manipuleert Excel-bestanden.

Waarom OpenPyxl gebruiken:  Vraag iemand om drie tools te noemen die cijferkrunchers gebruiken in hun werk, de kans is groot dat je Python, R en Excel krijgt, niet noodzakelijk in die volgorde. Excel heeft (nog) geen native Python-connectiviteit, maar pakketten van derden hebben de kloof op verschillende manieren overbrugd.

Openpyxl werkt door Excel- bestanden te wijzigen in   plaats van door Excel rechtstreeks te manipuleren. Met Openpyxl kunt u het maken van spreadsheets en werkmappen automatiseren, formules genereren, cellen vullen met die formules en vele andere bewerkingen uitvoeren. U kunt ook de eigenschappen van Excel-objecten wijzigen, zoals celstijlen en voorwaardelijke opmaak. Iedereen die veel tijd besteedt aan het staren naar spreadsheets, vindt hier iets nuttigs.

Peewee

Wat Peewee doet:  een kleine ORM (object-relationele mapper) die SQLite, MySQL en PostgreSQL ondersteunt, met veel extensies.

Waarom Peewee gebruiken:  Niet iedereen houdt van een ORM; sommigen laten schemamodellering liever aan de databasezijde over en zijn er klaar mee. Maar voor ontwikkelaars die geen databases willen aanraken, kan een goed geconstrueerde, onopvallende ORM een uitkomst zijn. En voor ontwikkelaars die geen ORM willen die zo volledig is als SQL Alchemy, is Peewee een geweldige oplossing.

Peewee-modellen zijn eenvoudig te construeren, aan te sluiten en te manipuleren. Bovendien zijn veel veelgebruikte functies voor het manipuleren van zoekopdrachten, zoals paginering, direct ingebouwd. Er zijn meer functies beschikbaar als add-ons, waaronder uitbreidingen voor andere databases, testtools en een schemamigratiesysteem - een functie die zelfs een ORM-hater zou kunnen leren liefde. Merk op dat de Peewee 3.x branch (de aanbevolen editie) niet volledig achterwaarts compatibel is met eerdere versies van Peewee.

Hoofdkussen

Wat Pillow doet:  beeldverwerking zonder de pijn.

Waarom Pillow gebruiken:  De meeste Pythonista's die beeldverwerking hebben uitgevoerd, zouden bekend moeten zijn met PIL (Python Imaging Library), maar PIL zit vol tekortkomingen en beperkingen en wordt zelden bijgewerkt. Pillow streeft ernaar zowel gebruiksvriendelijker als  code-compatibel te zijn met PIL via minimale wijzigingen. Extensies zijn inbegrepen om te praten met zowel native Windows-beeldvormingsfuncties als het Tcl / Tk-ondersteunde Tkinter GUI-pakket van Python. Pillow is beschikbaar via GitHub of de PyPI-repository.

Poëzie

Wat poëzie doet:  beheert afhankelijkheden en verpakkingen voor uw Python-projecten op een hoogwaardige manier.

Waarom poëzie gebruiken:  in theorie hoef je niets te doen om een ​​nieuw Python-project te starten, behalve een lege map maken en deze vullen met .py-bestanden. In de praktijk, vooral voor een ambitieus project, zal je veel meer moeten doen - een README maken, een mapstructuur opzetten, je afhankelijkheden aangeven, enzovoort. Dit alles met de hand doen is hoofdpijn.

Poëzie automatiseert veel van deze installatie en onderhoud. Rennen poetry new om een ​​nieuwe projectdirectory en virtuele omgeving te maken, vooraf gevuld met een basisassortiment aan componenten. Geef uw afhankelijkheden aan met behulp van Pythons eigen pyprojec.toml bestandsformaat, en Poetry zal ze voor u beheren. Bij bestaande door Poëzie beheerde producten kunnen hun afhankelijkheden automatisch worden geïnstalleerd, vernieuwd en aangepast vanaf de opdrachtregel van Poetry. Poëzie zorgt ook voor publicatie naar een externe opslagplaats (zoals PyPI).

PyFilesystem

Wat PyFilesystem doet:  een Pythonische interface naar elk bestandssysteem -  elk  bestandssysteem.

Waarom PyFilesystem gebruiken:  Het fundamentele idee achter PyFilesystem kan niet eenvoudiger zijn: net zoals de fileobjecten van Python een enkel bestand abstraheren, abstraheren de FSobjecten van PyFilesystem een heel bestandssysteem. Dit betekent ook niet alleen bestandssystemen op schijf. PyFilesystem ondersteunt ook FTP-mappen, bestandssystemen in het geheugen, bestandssystemen voor locaties gedefinieerd door het besturingssysteem (zoals de gebruikersmap) en zelfs combinaties van de bovenstaande die op elkaar zijn gelegd.

PyFilesystem maakt het niet alleen gemakkelijker om platformonafhankelijke code te schrijven die bestanden manipuleert, maar voorkomt ook de noodzaak om scripts uit verschillende delen van de standaardbibliotheek samen te voegen, voornamelijk  os en  io. Het biedt ook hulpprogramma's die je anders misschien helemaal opnieuw zou moeten maken, zoals een tool voor het afdrukken van consolevriendelijke boomstructuren van een bestandssysteem.

Pygame

Wat Pygame doet:  videogames of front-ends van gamekwaliteit maken in Python.