Python-paket kan du bryta ner stora system och organisera sina moduler på ett konsekvent sätt som du och andra människor kan använda och återanvända effektivt. Pythons motto "Inkluderade batterier" innebär att det kommer förinstallerade med många användbara paket i standardbiblioteket.
Men det finns också många fantastiska paket från tredje part som du kan dra nytta av. I den här handledningen lär du dig allt du behöver veta om vilka paket som är exakta, hur man importerar moduler från paket, utforskar det inbyggda paketet i Pythons standardbibliotek och installerar paket från tredje part.
Innan vi kan prata om paket, låt oss prata om moduler. Moduler är källfilerna med * .py-förlängning där du (och alla andra) lägger de funktioner och klasser som innehåller ditt program. Paket är manifestationen av Pythons hierarkiska namnområden koncept. Att citera från Zen of Python:
"Namnrymden är en bra idé - låt oss göra fler av dem!"
För att se hela Zen of Python, skriv importera detta
i en Python-interaktiv session:
importera detta Zen of Python, av Tim Peters Beautiful är bättre än ful. Explicit är bättre än implicit. Enkel är bättre än komplex. Komplexa är bättre än komplicerat. Platt är bättre än kapslade. Sparsom är bättre än tät. Läsbarhetstalet. Särskilda fall är inte tillräckligt speciella för att bryta reglerna. Även om praktiken slår renhet. Fel ska aldrig passera tyst. Om inte uttryckligen tystas. Mot bakgrund av tvetydighet, vägra frestelsen att gissa. Det borde finnas en-- och helst bara en - oändligt sätt att göra det. Även om det sättet kanske inte är uppenbart först om du inte är nederländsk. Nu är det bättre än aldrig. Även om det aldrig är ofta bättre än * rätt * nu. Om genomförandet är svårt att förklara, är det en dålig idé. Om genomförandet är lätt att förklara kan det vara en bra idé. Namnrymder är en bra idé - låt oss göra fler av dem!
Namnrymden hjälper till med att organisera kod och förhindra namngivningskonflikter. Detta är avgörande när flera personer arbetar tillsammans eller när de använder paket som utvecklats av andra personer.
Medan paket representerar en hierarki av delpaket och moduler, som är filer, behöver hierarkin inte filsystem baserat där paket och delpaket är kataloger och underkataloger. Det är mycket mer flexibelt än det.
Låt oss ta en titt på ett paket som heter "ansible". Det är inte ett paket från standardbiblioteket. Du får se hur du hittar och installerar tredjepartspaket senare. Nu, låt oss bara kolla in katalogfilstrukturen.
Paketen installeras vanligtvis i Python-tolkens webbplats-paketkatalog, som kommer att lokaliseras någonstans (beroende på version, operativsystem och distribution) under "lib". På Mac, för Python 2.7 kommer den att vara placerad i "
träd ansible -L 1 ansible ├── __init__.py ├── cli ├── kompat ├── config ├── constants.py ├── fel ├── exekverare ├── galax ├─ ─ inventory ├── module_utils ├── moduler ├─ - parsing ├── playbook ├── plugins ├── mall ├── utils └─ - vars 15 kataloger, 2 filer
Det finns två moduler och 15 kataloger. Varje katalog är ett delpaket av huvudansvariga paketet. Titta i katalogen Ansible / utils, vi kan se att den innehåller ytterligare moduler och till och med ytterligare ett underpaket:
träd ansible / utils-L 1 ansible / utils ├── __init__.py ├── boolean.py ├── cmd_functions.py ├── color.py ── debug.py ├──play.py ├── kryptera .py ├── hashing.py ├── listify.py ├── module_docs.py ├── module_docs_fragments ├── path.py ▸ - shlex.py ├── unicode.py └──var.py 1 katalog , 14 filer
När du importerar en modul går Python igenom en sökalgoritm baserat på sökvägen, som är en lista över kataloger för att starta sökningen. Sökvägen är en lista över kataloger som är tillgängliga via sys.path
, och du kan manipulera det dynamiskt (lägg till, ta bort eller flytta objekt i sökvägen). Sidkatalogkatalogen finns alltid där.
För att importera modulen path.py från ansible / utils måste du använda följande kommando:
importera ansible.utils.path
Om du också vill använda standard os.oath-modulen använder du följande kommando:
importera os.path
Nu kan du använda endera eller båda sökmodulerna utan konflikter på grund av skillnaden namnrymden de tillhör.
Standardbiblioteket har många paket. Det är värt att utforska det när du behöver utföra en viss uppgift och du är inte säker på hur. Det finns en mycket hög sannolikhet att för alla allmänna ändamål som matematik, skalintegration, OS integration, strängmanipulation, nätverk och vanliga filformat finns det en väl utformad, välpresterande och välprövad paket i standardbiblioteket.
Du kan verkligen lita på standardbibliotekspaket eftersom det är en stor sak att komma in i standardbiblioteket. Antingen var paketet utformat av Pythons kärnutvecklare eller det var kraftigt granskat och används ofta i fältet som ett tredje partibibliotek innan det görs till standardbiblioteket.
Här är alla paket i standardbiblioteket som organiseras efter ämne.
Standardbiblioteket är fantastiskt, men det kommer ofta att finnas någon speciell funktionalitet du behöver som inte är standard. Det betyder inte att du måste skriva det från början. Python har ett pulserande och aktivt samhälle som utvecklar och delar fritt mycket kod. Ange PyPI - Python Package Index. PyPI är värd för alla offentligt tillgängliga paket och erbjuder en enda butik för att bläddra igenom dem.
PyPI organiserar förpackningarna i ett bläddringsindex. Du kan bläddra och söka efter ämne, miljö, ram, utveckling, status, avsedd publik, licens, naturligt språk, programmeringsspråk (ja, det finns Python-paket som stöder många programmeringsspråk) och operativsystem.
Det skiljer också mellan Python 2 och Python 3-paket, och du kan se hur populärt ett paket är med antalet senaste nedladdningar. Till exempel är ansible-paketet tillgängligt på PyPI, och här är dess metadata:
Nedladdningar (Alla versioner): 5528 nedladdningar under den senaste dagen 72037 nedladdningar under den senaste veckan 289967 nedladdningar under den senaste månaden Författare: Ansible, Inc. Hemsida: http://ansible.com/ Bug Tracker: http: // github. com / ansible / ansible / Licens: GPLv3 Kategorier Utvecklingsstatus :: 5 - Produktion / Stabil miljö :: Konsol Intended audience :: Utvecklare Intended audience :: Informationsteknik Intended audience :: Systemadministratörslicens :: OSI Approved :: GNU General Public Licens v3 eller senare (GPLv3 +) Naturligt språk :: Engelska Operativsystem :: POSIX Programmeringsspråk :: Python :: 2.6 Programmeringsspråk :: Python :: 2,7 Ämne :: System :: Installation / Inställning Ämne :: System :: Systemadministration Ämne :: Utilities Package Index Ägare: James.Laska, jimi, ansible Paketindex Innehavare: mpdehaan, badger DOAP rekord: ansible-2.0.0.2.xml
Det finns två sätt att installera paket från PyPI. Du kan ladda ner paketet och sedan springa python setup.py installera
. Men det moderna sättet är att använda pip, setuptools och hjul. Pip står för Pip Installs-paket (ja det är en av dessa akronymer) och är din främre ände för installation. Om du har Python 2> = 2.7.9 eller Python 3> = 3.4 installerad från python.org, kommer du redan ha pip och setuptools, men måste uppgradera till den senaste versionen: pip installera -U pip setuptools
eller python -m pip installera -U pip setuptools
på Windows.
Använd pip för att installera hjulet: pip installeringshjul
.
Om du använder en tidigare version av Python, överväg att uppdatera. Om du inte kan, måste du installera pip, setuptools och hjul på egen hand. Kontrollera instruktionerna.
Python-paket installeras alltid i en miljö. En vanlig praxis som jag inte kommer att täcka här är att använda virtuella miljöer för att hantera flera oberoende installationer av Python med olika tolkar och / eller olika uppsättningar installerade paket.
Python-förpackningsmyndigheten ger en hel del vägledning om bästa praxis kring förpackningar. Detta är viktigt eftersom det är ett område med aktiv utveckling och rekommendationer utvecklas snabbt.
Om du vill göra något speciellt som att installera paket från alternativa repositorier istället för PyPI eller använda pip på ett mer sofistikerat sätt, hittar du bra diskussioner och praktiska råd.
När du är en Python-nybörjare lär du dig kärnspråket och har kul att leka med det. Nästan snart upptäcker du standardbiblioteket, och som du får mer erfarenhet får du mer och mer av dess rikedom.
Nästa steg i din utveckling som en Pythonista är att införliva den stora awesomeness som Python-samhället har satt på PyPI i dina system. Paket som installationsenhet för återanvändbar Python-kod aktiverar detta ekosystem.