Naučite se ustvarjati, distribuirati in uporabljati pakete v Pythonu s pomočjo tega vodnika.

Predstavljajte si zastrašujočo nalogo razvoja celovite aplikacije, omejene na eno datoteko Python. Čeprav je tehnično izvedljivo, je v nasprotju s temeljnimi načeli gradnje učinkovite programske opreme, ki jo je mogoče vzdrževati in jo je mogoče ponovno uporabiti. Zaradi teh razlogov so paketi in moduli bistveni za gradnjo in razvoj programske opreme.

Kaj je paket?

V Pythonu paket ponuja način za skupno organizacijo logično povezanih modulov in virov. To je imenik, ki vsebuje več modulov Python, podpaketov in drugih virov.

Paketi nudijo hierarhično strukturo, ki vam omogoča organiziranje kode vašega projekta na različnih ravneh abstrakcije.

Razlika med paketi in moduli

Medtem ko lahko uporabljate oba paketa in moduli za organiziranje kode, so med njima razlike:

  • Modul: Modul je datoteka, ki vsebuje kodo Python. Definira funkcije, razrede, spremenljivke in druge objekte, ki jih lahko uvozite in uporabite v svoji kodi.
  • Paket: Paket je zbirka enega ali več modulov in lahko vključuje tudi podpakete.
instagram viewer

Kako ustvariti paket v Pythonu

Če želite ustvariti paket, sledite tem korakom.

1. korak: Ustvarite imenik projekta

Začnite z ustvarjanjem imenika projekta.

study_bud/

2. korak: Ustvarite imenik paketov

Znotraj vašega projektnega imenika ustvarite drug imenik, ki bo služil kot imenik paketa. Dajte mu smiselno ime, ki predstavlja namen ali funkcionalnost paketa. Imenik paketov bo vseboval module in podpakete, povezane z vašim paketom.

study_bud/
math_tool/

3. korak: Definirajte datoteko paketa __init__.py

V imeniku paketov ustvarite __init__.py mapa. Prisotnost __init__.py datoteka je tisto, zaradi česar je imenik paket v Pythonu.

Če morate inicializirati kodo vsakič, ko uporabljate paket, jo vključite v __init__.py datoteka sicer je vedno prazna.

study_bud/
math_tool/
__init__.py

4. korak: dodajte module v paket

Znotraj imenika paketov dodajte module Python (.py), ki definirajo funkcije, razrede ali spremenljivke.

Ti moduli vsebujejo dejansko kodo, ki zagotavlja funkcionalnost vašega paketa. V imeniku paketov lahko ustvarite več modulov.

study_bud/
math_tool/
__init__.py
operations.py
statistics.py

5. korak: Paketu dodajte podpakete

Če mora imeti vaš paket hierarhično strukturo ali vsebuje različne funkcije, lahko ustvarite podpakete v imeniku paketov.

Podpaket je preprosto drug imenik paketov v glavnem imeniku paketov. Vsak podpaket mora imeti svojega __init__.py mapa. Podpaketi omogočajo nadaljnjo organizacijo in ločevanje kode.

study_bud/
math_tool/
__init__.py
operations.py
statistics.py
geometry/
__init__.py
shapes.py
calculus/
__init__.py
integrations.py

V teh korakih ste ustvarili a math_tool paket, dodana dva modula (operations.py in statistics.py) in dva podpaketa geometrija in račun vsak ima svoje module.

Če sledite tem korakom, lahko preprosto organizirate povezane funkcije z uporabo paketa in podpaketov, kar olajša upravljanje in ponovno uporabo kode.

Kako delati s paketom v Pythonu

Če želite delati s paketom, ga morate uvoziti. The uvoz in od ključne besede vam omogočajo uvoz in uporabo paketa v vaši kodi.

import math_tool # entire package

Zapis s piko lahko uporabite tudi za uvoz modulov, podpaketov ali določenih lastnosti iz paketa. Zapis s pikami vam omogoča krmarjenje po strukturi imenika paketa. Zapis s pikami naredi vaše uvoze bolj berljive in lažje za vzdrževanje.

from math_tool.operations import add, multiply # specific functions

V zgornji kodi ste krmarili iz imenika paketov (math_tool) do operacije modul z zapisom pik in uvozil dve funkciji (dodati in pomnožiti).

Absolutni uvoz vs. Relativni uvozi

z absolutnouvoz, določite celotno pot od paketa najvišje ravni (korenskega paketa) do želenega modula ali podpaketa. To je najpogostejši in priporočen način za uvoz modulov in paketov v Python.

from math_tool.geometry.shapes import parallelogram

Začeti od math_tool pojdi v geometrija podpaket, poiščite oblike.py modul in uvozite paralelogram funkcijo.

Medtem relativnouvoz omogočajo uvoze glede na lokacijo trenutnega modula z uporabo zapisa s pikami za določitev relativnih uvozov.

Na primer, znotraj calculus/integrations.py modula, lahko uporabite relativni uvoz za uvoz funkcije iz oblike.py modul v geometrija podpaket.

# calculus/integrations.py
from ..geometry.shapes import rhombus

Dvojna pika ("..") pove Pythonu, da:

  • Začnite v imeniku podpaketov (račun), kjer je modul (integracije.py) obstaja.
  • Pojdite v nadrejeni paket (math_tool) imenik podpaketa.
  • Poišči geometrija podpaket v nadrejenem imeniku.
  • Pojdi v oblike.py modul in uvoz romb iz tega.

Zapis s piko torej predstavlja število imenikov za navigacijo iz trenutnega imenika modula.

Alias ​​uvozi za udobje

Uvozu lahko dodelite vzdevek, da se nanj lažje sklicujete v svoji kodi. Vzdevki so priročni, ko imate opravka z dolgimi imeni paketov ali modulov.

Za dodelitev vzdevka uporabite kot ključna beseda.

import math_tool.calculus as cal

Kako distribuirati svoj paket v Pythonu

Python vam ponuja orodja in platformo za izdelavo in distribucijo vašega paketa. Distribucija vašega paketa vam omogoča, da svojo kodo delite z drugimi razvijalci, spodbujate sodelovanje, poenostavite namestitev za uporabnike in prispevate k širši skupnosti Python.

1. korak: Ustvarite račun na PyPI

Indeks paketov Python (PyPI) je privzeto skladišče za pakete Python. Svoje pakete lahko objavite na PyPI, tako da jih drugi razvijalci zlahka najdejo in namestijo.

Ne pozabite si zapomniti svojega uporabniško ime in geslo saj jih boste potrebovali za preverjanje pristnosti pri nalaganju paketa v PyPI.

Ta orodja vam olajšajo konfiguracijo, gradnjo in potiskanje paketa za distribucijo v enem samem ukazu.

pip install build wheel twine

3. korak: Ustvarite datoteko setup.py

Če želite distribuirati svoj paket, ustvarite a datoteko setup.py v korenskem imeniku vašega projekta. The setup.py datoteka vsebuje metapodatke o vašem paketu, kot so ime, različica, avtor, opis, odvisnosti in drugo.

Orodja za upravljanje paketov bodo uporabljala setup.py datoteko za konfiguracijo in izdelavo vašega paketa.

#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',
],
)

4. korak: sestavite paket

Ko enkrat imate setup.py datoteka pripravljena, jo lahko uporabite za izdelavo paketa za distribucijo. V terminalu ali ukaznem pozivu pomaknite se do imenika ki vsebuje setup.py datoteko in izvedite naslednji ukaz:

python setup.py sdist bdist_wheel

Ta ukaz ustvari a dist imenik, ki vsebuje izvorni distribucijski paket (.tar.gz) in kolesni distribucijski paket (.whl). Videli boste tudi a graditi in info imenik.

5. korak: naložite paket v PyPI

Ko je paket pripravljen, ga lahko naložite v PyPI.

Izvedite naslednji ukaz:

twine upload dist/*
> Uploading distributions to https://upload.pypi.org/legacy/
> Enter your username: **********
> Enter your password: **********

Obiščite svojega PyPI stran za upravljanje projektov, da si ogledate svoj paket.

Zdaj ga lahko drugi razvijalci, ki se jim zdi vaš paket koristen, namestijo in uporabljajo lokalno.

Kako namestiti paket Python

Upravitelji paketov, kot je pip olajša namestitev in upravljanje paketov Python iz različnih virov, vključno z indeksom paketov Python (PyPI). Za namestitev paketa uporabite pip, odprite terminal ali ukazni poziv in uporabite naslednji ukaz:

pip install 

Za ogled vseh razpoložljivih ukazov in možnosti za pip uporabi -- pomoč možnost.

Pisanje čistih modulov

Paketi vsebujejo module in podpakete, ki nato vsebujejo druge module. Modularizirati svojo kodo je dobra praksa, zlasti pri delu na večjih projektih, saj spodbuja boljšo organizacijo in berljivost kode. Zato je pomembno, da pri razvoju s Pythonom pišete module jasno.