Lær, hvordan du opretter, distribuerer og bruger pakker i Python ved hjælp af denne guide.
Forestil dig den skræmmende opgave at udvikle en omfattende applikation begrænset til en enkelt Python-fil. Selvom det er teknisk muligt, strider det imod kerneprincipperne for at bygge effektiv, vedligeholdelig og genbrugelig software. Af sådanne grunde er pakker og moduler afgørende for at bygge og udvikle software.
Hvad er en pakke?
I Python giver en pakke en måde at organisere logisk relaterede moduler og ressourcer sammen på. Det er en mappe, der indeholder flere Python-moduler, underpakker og andre ressourcer.
Pakker giver en hierarkisk struktur, så du kan organisere dit projekts kode på forskellige abstraktionsniveauer.
Forskellen mellem pakker og moduler
Mens du kan bruge både pakker og moduler til at organisere kode, der er forskelle mellem dem:
- modul: Et modul er en fil, der indeholder Python-kode. Den definerer funktioner, klasser, variabler og andre objekter, som du kan importere og bruge i din kode.
- Pakke: En pakke er en samling af et eller flere moduler og kan også omfatte underpakker.
Sådan opretter du en pakke i Python
Følg disse trin for at oprette en pakke.
Trin 1: Opret en projektmappe
Start med at oprette en projektmappe.
study_bud/
Trin 2: Opret en pakkekatalog
Inde i dit projektbibliotek skal du oprette et andet bibliotek, der vil fungere som pakkebiblioteket. Giv den et meningsfuldt navn, der repræsenterer pakkens formål eller funktionalitet. Pakkebiblioteket vil indeholde de moduler og underpakker, der er relateret til din pakke.
study_bud/
math_tool/
Trin 3: Definer pakke __init__.py-filen
I pakkebiblioteket skal du oprette en __init__.py fil. Tilstedeværelsen af __init__.py fil er det, der gør mappen til en pakke i Python.
Hvis du har brug for at initialisere en kode, hver gang du bruger pakken, skal du inkludere den i __init__.py fil ellers er den altid tom.
study_bud/
math_tool/
__init__.py
Trin 4: Tilføj moduler til pakken
Tilføj Python-moduler (.py) i pakkebiblioteket, der definerer funktioner, klasser eller variabler.
Disse moduler indeholder den faktiske kode, der giver din pakkes funktionalitet. Du kan oprette flere moduler i pakkebiblioteket.
study_bud/
math_tool/
__init__.py
operations.py
statistics.py
Trin 5: Tilføj underpakker til pakken
Hvis din pakke skal have en hierarkisk struktur eller indeholde særskilte funktionaliteter, kan du oprette underpakker i pakkekataloget.
En underpakke er ganske enkelt en anden pakkemappe i hovedpakkens bibliotek. Hver underpakke skal have sin __init__.py fil. Underpakker giver mulighed for yderligere organisering og adskillelse af kode.
study_bud/
math_tool/
__init__.py
operations.py
statistics.py
geometry/
__init__.py
shapes.py
calculus/
__init__.py
integrations.py
I disse trin har du oprettet en matematisk_værktøj pakke, tilføjet to moduler (operations.py og statistik.py), og to underpakker geometri og beregning har hver deres moduler.
Ved at følge disse trin kan du nemt organisere relateret funktionalitet ved hjælp af en pakke og underpakker, hvilket gør det nemmere at administrere og genbruge kode.
Sådan arbejder du med en pakke i Python
For at arbejde med en pakke skal du importere den. Det importere og fra nøgleord giver dig mulighed for at importere og bruge en pakke i din kode.
import math_tool # entire package
Du kan også bruge punktnotationen til at importere moduler, underpakker eller specifikke egenskaber fra en pakke. Punktnotationen giver dig mulighed for at navigere gennem pakkemappestrukturen. Punktnotation gør dine importer mere læsbare og nemmere at vedligeholde.
from math_tool.operations import add, multiply # specific functions
I ovenstående kode navigerede du fra pakkekataloget (matematisk_værktøj) til operationer modul ved hjælp af punktnotationen og importerede to funktioner (tilføje og formere sig).
Absolut import vs. Relativ import
Med absolutimport, angiver du den fulde sti fra pakken på øverste niveau (rodpakken) til det ønskede modul eller underpakke. Dette er den mest almindelige og anbefalede måde at importere moduler og pakker i Python.
from math_tool.geometry.shapes import parallelogram
Startende fra matematisk_værktøj gå ind i geometri underpakke, find shapes.py modul, og importer parallelogram fungere.
Mens i forholdimport giver dig mulighed for at foretage importer i forhold til det aktuelle moduls placering ved hjælp af punktnotationen til at angive relative importer.
For eksempel inde i calculus/integrations.py modul, kan du bruge relativ import til at importere en funktion fra shapes.py modul i geometri underpakke.
# calculus/integrations.py
from ..geometry.shapes import rhombus
Dobbeltprikken ("..") fortæller Python at:
- Start fra underpakkebiblioteket (beregning) hvor modulet (integrations.py) findes.
- Gå ind i forældrepakken (matematisk_værktøj) bibliotek for underpakken.
- Find geometri underpakke i det overordnede bibliotek.
- Gå ind i shapes.py modul og import rombe fra det.
Så priknotationen repræsenterer antallet af mapper, der skal navigeres til fra det aktuelle modulbibliotek.
Alias import for nemheds skyld
Du kan tildele et alias til en import, hvilket gør det nemmere at henvise til i din kode. Aliaser er praktiske, når du har at gøre med lange pakke- eller modulnavne.
For at tildele et alias skal du bruge som søgeord.
import math_tool.calculus as cal
Sådan distribuerer du din pakke i Python
Python giver dig værktøjer og en platform til at bygge og distribuere din pakke. Distribution af din pakke giver dig mulighed for at dele din kode med andre udviklere, fremme samarbejde, forenkle installationen for brugere og bidrage til det bredere Python-fællesskab.
Trin 1: Opret en konto på PyPI
Python-pakkeindeks (PyPI) er standardlageret for Python-pakker. Du kan udgive dine pakker på PyPI, så andre udviklere nemt kan finde og installere dem.
Sørg for at huske din brugernavn og adgangskode da du skal bruge dem til godkendelse, når du uploader din pakke til PyPI.
Disse værktøjer gør det nemt for dig at konfigurere, bygge og skubbe en distribuerbar pakke i en enkelt kommando.
pip install build wheel twine
Trin 3: Opret en setup.py-fil
For at distribuere din pakke skal du oprette en setup.py filen i dit projekts rodmappe. Det setup.py fil indeholder metadata om din pakke, såsom dens navn, version, forfatter, beskrivelse, afhængigheder og mere.
Pakkestyringsværktøjerne vil bruge setup.py fil for at konfigurere og bygge din pakke.
#setup.py
from setuptools import setup, find_packages
setup(
name='' ,
version='1.0.0',
author='' ,
description='A collection of mathematical utility functions',
packages=find_packages(),
install_requires=[
'numpy',
'scipy',
],
)
Trin 4: Byg pakken
Når du har setup.py fil klar, kan du bruge den til at bygge en distribuerbar pakke. I din terminal eller kommandoprompt, navigere til biblioteket indeholdende setup.py fil og udfør følgende kommando:
python setup.py sdist bdist_wheel
Denne kommando genererer en dist bibliotek, der indeholder en kildedistributionspakke (.tar.gz) og en hjuldistributionspakke (.whl). Du vil også se en bygge og info vejviser.
Trin 5: Upload pakken til PyPI
Med din pakke klar, kan du uploade den til PyPI.
Udfør følgende kommando:
twine upload dist/*
> Uploading distributions to https://upload.pypi.org/legacy/
> Enter your username: **********
> Enter your password: **********
Besøg din PyPI projektstyringsside for at se din pakke.
Nu kan andre udviklere, der finder din pakke nyttig, installere og bruge den lokalt.
Sådan installeres en Python-pakke
Pakkeforvaltere kan lide pip gør det nemt at installere og administrere Python-pakker fra forskellige kilder, herunder Python Package Index (PyPI). For at installere en pakke ved hjælp af pip, åbn din terminal eller kommandoprompt og brug følgende kommando:
pip install
For at se alle tilgængelige kommandoer og muligheder for pip brug --Hjælp mulighed.
At skrive rene moduler
Pakker indeholder moduler og underpakker, som igen indeholder andre moduler. Det er en god praksis at modularisere din kode, især når du arbejder på større projekter, da det fremmer en bedre kodeorganisering og læsbarhed. Så det er vigtigt at skrive moduler med klarhed, når du udvikler med Python.