Sužinokite, kaip kurti, platinti ir naudoti paketus „Python“ naudodami šį vadovą.

Įsivaizduokite nelengvą užduotį sukurti išsamią programą, apribotą vienu Python failu. Nors techniškai įmanoma, tai prieštarauja pagrindiniams efektyvios, prižiūrimos ir daugkartinio naudojimo programinės įrangos kūrimo principams. Dėl tokių priežasčių paketai ir moduliai yra būtini kuriant ir kuriant programinę įrangą.

Kas yra paketas?

Python programoje paketas suteikia galimybę kartu tvarkyti logiškai susijusius modulius ir išteklius. Tai katalogas, kuriame yra keli Python moduliai, antriniai paketai ir kiti ištekliai.

Paketai suteikia hierarchinę struktūrą, leidžiančią tvarkyti projekto kodą skirtingais abstrakcijos lygiais.

Skirtumas tarp paketų ir modulių

Nors galite naudoti tiek paketus, tiek moduliai kodui tvarkyti, tarp jų yra skirtumų:

  • Modulis: Modulis yra failas, kuriame yra Python kodas. Jis apibrėžia funkcijas, klases, kintamuosius ir kitus objektus, kuriuos galite importuoti ir naudoti savo kode.
  • Paketas: paketas yra vieno ar daugiau modulių rinkinys, taip pat gali būti ir antriniai paketai.
instagram viewer

Kaip sukurti paketą Python

Norėdami sukurti paketą, atlikite šiuos veiksmus.

1 veiksmas: sukurkite projekto katalogą

Pradėkite kurdami projekto katalogą.

study_bud/

2 veiksmas: sukurkite paketų katalogą

Savo projekto kataloge sukurkite kitą katalogą, kuris bus paketų katalogas. Suteikite jam prasmingą pavadinimą, nurodantį paketo paskirtį arba funkcionalumą. Paketų kataloge bus su jūsų paketu susiję moduliai ir antriniai paketai.

study_bud/
math_tool/

3 veiksmas: apibrėžkite paketo __init__.py failą

Paketų kataloge sukurkite __init__.py failą. Buvimas __init__.py failas yra tai, kas daro katalogą paketu Python.

Jei jums reikia inicijuoti kodą, kai naudojate paketą, įtraukite jį į __init__.py kitu atveju jis visada tuščias.

study_bud/
math_tool/
__init__.py

4 veiksmas: pridėkite modulius prie paketo

Į paketų katalogą pridėkite Python modulių (.py), kurie apibrėžia funkcijas, klases arba kintamuosius.

Šiuose moduliuose yra tikrasis kodas, užtikrinantis jūsų paketo funkcijas. Paketų kataloge galite sukurti kelis modulius.

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

5 veiksmas: pridėkite antrinius paketus prie paketo

Jei jūsų paketas turi turėti hierarchinę struktūrą arba jame yra skirtingų funkcijų, paketų kataloge galite sukurti antrinius paketus.

Papildomas paketas yra tiesiog kitas paketų katalogas pagrindiniame paketų kataloge. Kiekvienas subpaketas turi turėti savo __init__.py failą. Subpaketai leidžia toliau organizuoti ir atskirti kodą.

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

Atlikdami šiuos veiksmus sukūrėte a matematikos_rankis paketas, pridėti du moduliai (operacijos.py ir statistika.py) ir du antriniai paketai geometrija ir skaičiavimas kiekvienas turi savo modulius.

Atlikdami šiuos veiksmus galite lengvai tvarkyti susijusias funkcijas naudodami paketą ir antrinius paketus, kad būtų lengviau valdyti ir pakartotinai naudoti kodą.

Kaip dirbti su paketu Python

Norėdami dirbti su paketu, turite jį importuoti. The importuoti ir raktiniai žodžiai leidžia importuoti ir naudoti paketą kode.

import math_tool # entire package

Taip pat galite naudoti taško žymėjimą, kad importuotumėte modulius, antrinius paketus arba konkrečias ypatybes iš paketo. Taškų žymėjimas leidžia naršyti paketo katalogo struktūroje. Taškų žymėjimas leidžia lengviau įskaityti ir lengviau prižiūrėti importuotus duomenis.

from math_tool.operations import add, multiply # specific functions

Aukščiau pateiktame kode naršėte iš paketų katalogo (matematikos_rankis) į operacijos modulis naudojant taško žymėjimą ir importuotas dvi funkcijas (papildyti ir padauginti).

Absoliutus importas vs. Santykinis importas

Su absoliutusimportas, nurodote visą kelią nuo aukščiausio lygio paketo (šakninio paketo) iki norimo modulio arba antrinio paketo. Tai yra labiausiai paplitęs ir rekomenduojamas būdas importuoti modulius ir paketus į Python.

from math_tool.geometry.shapes import parallelogram

Pradėti nuo matematikos_rankis eiti į geometrija antrinį paketą, suraskite formos.py modulį ir importuokite lygiagretainis funkcija.

Nors giminaitisimportas leidžia importuoti pagal dabartinę modulio vietą, naudojant taško žymėjimą, kad nurodytumėte santykinį importavimą.

Pavyzdžiui, viduje calculus/integrations.py modulį, galite naudoti santykinį importą, kad importuotumėte funkciją iš formos.py modulyje geometrija subpaketas.

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

Dvigubas taškas (..") nurodo Python:

  • Pradėkite nuo antrinio paketo katalogo (skaičiavimas) kur modulis (integrations.py) egzistuoja.
  • Eikite į pagrindinį paketą (matematikos_rankis) antrinio paketo katalogą.
  • Surask geometrija antrinį paketą pirminiame kataloge.
  • Eikite į formos.py modulis ir importas rombas iš jo.

Taigi taško žymėjimas parodo katalogų, į kuriuos reikia pereiti iš dabartinio modulio katalogo, skaičių.

Pseudonimas Importas patogumui

Importavimui galite priskirti slapyvardį, kad būtų lengviau nurodyti savo kode. Pseudonimai yra naudingi, kai kalbama apie ilgus paketų ar modulių pavadinimus.

Norėdami priskirti slapyvardį, naudokite kaip raktažodį.

import math_tool.calculus as cal

Kaip paskirstyti savo paketą Python

„Python“ suteikia jums įrankius ir platformą paketui kurti ir platinti. Paketo platinimas leidžia bendrinti savo kodą su kitais kūrėjais, skatinti bendradarbiavimą, supaprastinti diegimą vartotojams ir prisidėti prie platesnės Python bendruomenės.

1 veiksmas: sukurkite paskyrą PyPI

Python paketų indeksas (PyPI) yra numatytoji Python paketų saugykla. Galite paskelbti savo paketus PyPI, kad kiti kūrėjai galėtų lengvai juos rasti ir įdiegti.

Būtinai atsiminkite savo Vartotojo vardas ir Slaptažodis nes jų prireiks autentifikavimui įkeliant paketą į PyPI.

Šie įrankiai leidžia lengvai konfigūruoti, kurti ir stumti platinamą paketą viena komanda.

pip install build wheel twine

3 veiksmas: sukurkite failą setup.py

Norėdami platinti savo paketą, sukurkite a setup.py failą savo projekto šakniniame kataloge. The setup.py faile yra metaduomenys apie jūsų paketą, pvz., jo pavadinimas, versija, autorius, aprašas, priklausomybės ir kt.

Paketų valdymo įrankiai naudos setup.py failą, kad sukonfigūruotumėte ir sukurtumėte paketą.

#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 veiksmas: sukurkite paketą

Kai tik turėsite setup.py failas paruoštas, galite jį naudoti kurdami platinamą paketą. Terminale arba komandų eilutėje eikite į katalogą kuriame yra setup.py failą ir vykdykite šią komandą:

python setup.py sdist bdist_wheel

Ši komanda generuoja a raj katalogą, kuriame yra šaltinio platinimo paketas (.tar.gz) ir ratų paskirstymo paketas (.whl). Taip pat pamatysite a statyti ir informacija katalogas.

5 veiksmas: įkelkite paketą į PyPI

Kai paketas yra paruoštas, galite įkelti jį į PyPI.

Vykdykite šią komandą:

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

Aplankykite savo PyPI projekto valdymo puslapį, kad pamatytumėte savo paketą.

Dabar kiti kūrėjai, kuriems jūsų paketas atrodo naudingas, gali jį įdiegti ir naudoti vietoje.

Kaip įdiegti Python paketą

Paketų tvarkytojams patinka pip palengvinti Python paketų diegimą ir tvarkymą iš įvairių šaltinių, įskaitant Python Package Index (PyPI). Norėdami įdiegti paketą naudodami pip, atidarykite terminalą arba komandų eilutę ir naudokite šią komandą:

pip install 

Norėdami pamatyti visas galimas komandas ir parinktis pip naudoti --padėkite variantas.

Švarių modulių rašymas

Paketuose yra modulių ir antrinių paketų, kuriuose savo ruožtu yra kitų modulių. Gera praktika moduliuoti kodą, ypač dirbant su didesniais projektais, nes tai skatina geresnį kodo organizavimą ir skaitomumą. Taigi, kuriant su Python svarbu modulius rašyti aiškiai.