Uzziniet, kā izveidot, izplatīt un lietot pakotnes programmā Python, izmantojot šo rokasgrāmatu.

Iedomājieties biedējošo uzdevumu izstrādāt visaptverošu lietojumprogrammu, kas aprobežojas ar vienu Python failu. Lai gan tas ir tehniski iespējams, tas ir pretrunā efektīvas, uzturējamas un atkārtoti lietojamas programmatūras izveides pamatprincipiem. Šo iemeslu dēļ pakotnes un moduļi ir būtiski programmatūras izveidei un izstrādei.

Kas ir pakete?

Programmā Python pakotne nodrošina veidu, kā kopā organizēt loģiski saistītus moduļus un resursus. Tas ir direktorijs, kurā ir vairāki Python moduļi, apakšpaketes un citi resursi.

Paketes nodrošina hierarhisku struktūru, kas ļauj sakārtot projekta kodu dažādos abstrakcijas līmeņos.

Atšķirība starp pakotnēm un moduļiem

Kamēr jūs varat izmantot gan paketes, gan moduļi koda organizēšanai, starp tām pastāv atšķirības:

  • Modulis: modulis ir fails, kurā ir Python kods. Tas definē funkcijas, klases, mainīgos un citus objektus, kurus varat importēt un izmantot savā kodā.
  • Iepakojums: pakotne ir viena vai vairāku moduļu kolekcija, un tajā var būt arī apakšpaketes.

Kā izveidot paketi Python

Lai izveidotu paketi, izpildiet šīs darbības.

1. darbība. Izveidojiet projekta direktoriju

Sāciet, izveidojot projekta direktoriju.

study_bud/

2. darbība: izveidojiet pakotņu direktoriju

Projekta direktorijā izveidojiet citu direktoriju, kas kalpos kā pakotņu direktorijs. Piešķiriet tai jēgpilnu nosaukumu, kas atspoguļo pakotnes mērķi vai funkcionalitāti. Pakešu direktorijā būs ar jūsu pakotni saistītie moduļi un apakšpaketes.

study_bud/
math_tool/

3. darbība: definējiet pakotnes __init__.py failu

Pakešu direktorijā izveidojiet __init__.py failu. Klātbūtne __init__.py fails padara direktoriju par paketi Python.

Ja jums ir nepieciešams inicializēt kodu ikreiz, kad izmantojat pakotni, iekļaujiet to __init__.py fails, pretējā gadījumā tas vienmēr ir tukšs.

study_bud/
math_tool/
__init__.py

4. darbība: pievienojiet pakotnei moduļus

Pakešu direktorijā pievienojiet Python moduļus (.py), kas definē funkcijas, klases vai mainīgos.

Šajos moduļos ir faktiskais kods, kas nodrošina jūsu pakotnes funkcionalitāti. Pakešu direktorijā varat izveidot vairākus moduļus.

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

5. darbība: pievienojiet pakotnei apakšpakas

Ja jūsu pakotnei ir jābūt hierarhiskai struktūrai vai tajā ir atšķirīgas funkcijas, pakotņu direktorijā varat izveidot apakšpaketes.

Apakšpakotne ir vienkārši vēl viens pakotņu direktorijs galvenajā pakotņu direktorijā. Katrai apakšpakotnei jābūt savai __init__.py failu. Apakšpakas ļauj tālāk organizēt un atdalīt kodu.

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

Šajās darbībās esat izveidojis a matemātikas_rīks pakotne, pievienoti divi moduļi (operācijas.py un statistika.py), un divas apakšpakas ģeometrija un aprēķins katram ir savi moduļi.

Veicot šīs darbības, varat viegli organizēt saistītās funkcionalitātes, izmantojot pakotni un apakšpaketes, tādējādi atvieglojot koda pārvaldību un atkārtotu izmantošanu.

Kā strādāt ar paketi Python

Lai strādātu ar pakotni, tā ir jāimportē. The imports un no atslēgvārdi ļauj importēt un izmantot pakotni savā kodā.

import math_tool # entire package

Varat arī izmantot punktu apzīmējumu, lai no pakotnes importētu moduļus, apakšpakas vai īpašus rekvizītus. Punktu apzīmējums ļauj pārvietoties pa pakotnes direktoriju struktūru. Punktu apzīmējumi padara importētos datus lasāmākus un vieglāk uzturējamus.

from math_tool.operations import add, multiply # specific functions

Iepriekš minētajā kodā jūs navigējāt no pakotņu direktorija (matemātikas_rīks) uz operācijas modulis, izmantojot punktu apzīmējumu un importētas divas funkcijas (pievienot un vairoties).

Absolūtais imports vs. Relatīvais imports

Ar absolūtsimports, jūs norādāt pilnu ceļu no augstākā līmeņa pakotnes (saknes pakotnes) uz vajadzīgo moduli vai apakšpaketi. Šis ir visizplatītākais un ieteicamākais veids, kā importēt moduļus un pakotnes programmā Python.

from math_tool.geometry.shapes import parallelogram

Sākot no matemātikas_rīks iedziļināties ģeometrija apakšpaketi, atrodiet formas.py moduli un importējiet to paralelograms funkciju.

Kamēr radinieksimports ļauj veikt importēšanu attiecībā pret pašreizējo moduļa atrašanās vietu, izmantojot punktu apzīmējumu, lai norādītu relatīvos importus.

Piemēram, iekšpusē calculus/integrations.py moduli, varat izmantot relatīvo importēšanu, lai importētu funkciju no formas.py modulis ģeometrija apakšpakete.

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

Dubultais punkts (..") norāda Python:

  • Sāciet no apakšpakotnes direktorija (aprēķins) kur modulis (integrations.py) pastāv.
  • Dodieties uz vecāku pakotni (matemātikas_rīks) apakšpaketes direktoriju.
  • Atrodi ģeometrija apakšpakotni vecākdirektorijā.
  • Dodieties iekšā formas.py modulis un imports rombs no tā.

Tātad punktu apzīmējums apzīmē direktoriju skaitu, uz kuriem pārvietoties no pašreizējā moduļa direktorija.

Ērtības labad aizstājvārds Imports

Importēšanai varat piešķirt aizstājvārdu, atvieglojot atsauci uz to savā kodā. Pseidonīmi ir noderīgi, strādājot ar gariem pakotņu vai moduļu nosaukumiem.

Lai piešķirtu aizstājvārdu, izmantojiet atslēgvārds.

import math_tool.calculus as cal

Kā izplatīt savu paketi Python

Python nodrošina rīkus un platformu pakotnes izveidei un izplatīšanai. Pakotnes izplatīšana ļauj koplietot savu kodu ar citiem izstrādātājiem, veicināt sadarbību, vienkāršot instalēšanu lietotājiem un sniegt ieguldījumu plašākā Python kopienas attīstībā.

1. darbība. Izveidojiet kontu vietnē PyPI

Python pakotņu indekss (PyPI) ir Python pakotņu noklusējuma repozitorijs. Varat publicēt savas pakotnes vietnē PyPI, lai citi izstrādātāji varētu tās viegli atrast un instalēt.

Noteikti atcerieties savu lietotājvārds un parole jo tie būs nepieciešami autentifikācijai, augšupielādējot pakotni PyPI.

Šie rīki atvieglo izplatāmas pakotnes konfigurēšanu, izveidošanu un nosūtīšanu ar vienu komandu.

pip install build wheel twine

3. darbība. Izveidojiet failu setup.py

Lai izplatītu savu paku, izveidojiet a setup.py failu sava projekta saknes direktorijā. The setup.py failā ir ietverti metadati par jūsu pakotni, piemēram, tās nosaukums, versija, autors, apraksts, atkarības un citi.

Pakešu pārvaldības rīki izmantos setup.py failu, lai konfigurētu un izveidotu pakotni.

#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. darbība: izveidojiet paketi

Kad jums ir setup.py fails ir gatavs, varat to izmantot, lai izveidotu izplatāmu pakotni. Terminālī vai komandu uzvednē dodieties uz direktoriju kas satur setup.py failu un izpildiet šādu komandu:

python setup.py sdist bdist_wheel

Šī komanda ģenerē a dist direktorijā, kurā ir avota izplatīšanas pakotne (.tar.gz) un riteņu izplatīšanas pakotne (.whl). Jūs redzēsiet arī a būvēt un info direktoriju.

5. darbība. Augšupielādējiet pakotni pakalpojumā PyPI

Kad pakotne ir gatava, varat to augšupielādēt PyPI.

Izpildiet šādu komandu:

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

Apmeklējiet savu PyPI projektu vadības lapu, lai redzētu savu paketi.

Tagad citi izstrādātāji, kuriem jūsu pakotne šķiet noderīga, var to instalēt un izmantot lokāli.

Kā instalēt Python pakotni

Pakešu pārvaldniekiem patīk pip atvieglo Python pakotņu instalēšanu un pārvaldību no dažādiem avotiem, tostarp Python Package Index (PyPI). Lai instalētu pakotni, izmantojot pip, atveriet savu termināli vai komandu uzvedni un izmantojiet šo komandu:

pip install 

Lai redzētu visas pieejamās komandas un opcijas pip izmantojiet -- palīdzēt opciju.

Tīro moduļu rakstīšana

Paketēs ir moduļi un apakšpaketes, kas savukārt satur citus moduļus. Laba prakse ir modularizēt kodu, īpaši, strādājot pie lielākiem projektiem, jo ​​tas veicina labāku koda organizēšanu un lasāmību. Tāpēc, izstrādājot ar Python, ir svarīgi moduļus rakstīt skaidri.