Prema istraživanju Stack Overflow iz 2023. godine, Python zauzima treće mesto po popularnosti među programskim jezicima. Njegova svestranost omogućava primenu u raznim oblastima, uključujući nauku o podacima, razvoj web aplikacija, mašinsko učenje, softversko inženjerstvo i naučno računarstvo.
Jedan od ključnih koncepata sa kojima se susrećete prilikom učenja i korišćenja Pythona jesu paketi. Šta su zapravo Python paketi i kako se oni kreiraju?
Ovaj tekst će:
- Definisati Python pakete
- Objasniti značaj Python paketa u programiranju
- Prikazati postupak kreiranja Python paketa
- Demonstrirati kako se koriste i testiraju Python paketi
- Pokazati kako se Python paketi mogu postaviti na internet
Šta su Python paketi?
Python paketi su fundamentalni gradivni elementi u programiranju. Bez njih, programeri bi morali sve pisati od nule, što bi programiranje učinilo dugotrajnim i iscrpljujućim procesom. Python paketi su u osnovi zbirke Python modula, odnosno kolekcije koda koji se može ponovo koristiti.
Modul u Pythonu je datoteka koja sadrži Python kod i može se uvesti u druge Python programe. Da biste kreirali Python paket, potrebno je da sačuvate kod u direktorijumu koji sadrži datoteku __init__.py.
Python paket može sadržati druge pakete (ugnežđivanje), a na internetu su dostupne hiljade Python paketa. Neki od njih su zvanični, dok drugi nisu. Većina Python paketa može se pronaći na adresi https://pypi.org/.
Django, popularan Python web framework, je primer paketa koji se koristi za izradu web aplikacija. Scikit-learn, PyTorch i TensorFlow su poznati paketi u oblasti mašinskog učenja.
Značaj Python paketa
Zašto bi programeri pisali sve ispočetka? Da li su nam zaista potrebni Python paketi? Ovo su neki od razloga zašto su Python paketi značajni:
- Ušteda vremena: Python paket pruža pristup unapred napisanom kodu koji rešava uobičajene probleme. Možete koristiti Python pakete umesto da „ponovo izmišljate točak“ svaki put kada želite da napišete Python skriptu.
- Lakša distribucija koda: Saradnja je česta u programiranju. Možete kreirati Python paket koji članovi vašeg tima mogu uvesti prilikom zajedničkog rada na projektu.
- Ponovna upotreba koda: Ako postoji blok koda koji često koristite u svojim Python programima, možete ga spakovati u paket i uvesti u svoje aplikacije.
- Organizacija koda: Python paketi omogućavaju organizovanje koda u logičke module. Ovakav pristup olakšava čitanje i održavanje Python koda.
Kako kreirati svoj prvi Python paket
Kao što smo već pomenuli, Python je programski jezik opšte namene. Kao programer, možete kreirati različite vrste paketa.
Na primer, možete imati paket koji automatizuje određene zadatke, paket koji vam pomaže u budžetiranju ili čak paket za učenje novog jezika. Međutim, pre nego što počnete sa kreiranjem svog prvog paketa, potrebno je da ispunite sledeće preduslove:
Preduslovi:
- Python je instaliran na vašem računaru. Ukoliko koristite Linux, Python je obično već instaliran kao deo operativnog sistema. Možete proveriti da li je Python instaliran koristeći komandu `python –version` ili `python3 –version`. Ako je Python instaliran, videćete sličan izlaz u terminalu:
Ako nemate Python, možete ga preuzeti sa https://www.python.org/downloads/.
- Poznavanje Pythona. Neophodno je razumeti kako se pišu Python klase, moduli i funkcije.
- Menadžer paketa. U ovoj demonstraciji koristićemo `pip`. Možete proveriti da li je `pip` instaliran koristeći ovu komandu:
pip --version
Ako je instaliran, videćete nešto slično u terminalu.
Zahtevi se mogu razlikovati u zavisnosti od prirode paketa koji želite da kreirate.
U ovoj demonstraciji kreiraćemo jednostavan Python paket koji proverava da li je broj prost. Možete pratiti ove korake:
- Prvi korak: Kreirajte direktorijum projekta. Nazvaćemo ga `primechecker`.
- Drugi korak: Unutar `primechecker` direktorijuma, kreirajte novi direktorijum i nazovite ga `prime`.
- Treći korak: Unutar `prime` direktorijuma, kreirajte datoteku i nazovite je `prime.py`. Možete koristiti ovu komandu za sva tri koraka:
mkdir primechecker && cd primechecker && mkdir prime && cd prime && touch prime.py
- Četvrti korak: Otvorite svoj projekat u editoru koda. Dodajte ovaj kod u datoteku `prime.py` koji proverava da li je broj prost:
def is_prime(number): if number < 2: return False for i in range(2, int(number ** 0.5) + 1): if number % i == 0: return False return True
- Peti korak: U osnovnom direktorijumu kreirajte novu datoteku i nazovite je `__init__.py`. Ova datoteka omogućava Pythonu da prepozna direktorijum projekta koji smo kreirali kao paket.
Možete koristiti ovu komandu:
touch prime/__init__.py
- Šesti korak: Testirajte svoj kod. U osnovnom direktorijumu kreirajte skriptu u datoteci `test.py` koja proverava da li je broj prost. Vratite se u glavni direktorijum i koristite ovu komandu:
touch test.py
Zatim možete dodati ovaj kod u tu datoteku:
from prime.prime import is_prime number = int(input("Enter a number: ")) result = is_prime(number) print(f"{number} is prime: {result}")
Pokrenite ovu komandu da testirate svoj kod:
python3 test.py
Sada možete uneti broj i proveriti da li je prost.
Na primer, testirali smo brojeve 5 i 1 i dobili sledeći izlaz:
Kako postaviti paket na internet
Možete hostovati paket koji ste kreirali na PyPI (Python Package Index). To je centralno spremište sa hiljadama Python paketa. Idite na https://pypi.org/ i napravite nalog ako ga nemate.
Sada možete pratiti ove korake da biste postavili svoj paket na internet:
- Korak 1: U osnovnom direktorijumu (kod mene `primechecker`) kreirajte novu datoteku i nazovite je `setup.py`.
- Korak 2: Izmenite sadržaj datoteke `setup.py` tako da sadrži informacije o paketu koji želite da postavite.
Kod za ovu datoteku treba da bude sledeći:
from setuptools import setup, find_packages setup( name="primechecker", version='1.0.0', author="Your Name", author_email="[email protected]", description='A package for checking prime numbers', packages=find_packages(), )
Promenite `name`, `author`, `author_email` i `description` kako bi odgovarali detaljima vašeg paketa.
- Korak 3: Izgradite svoj paket. Pokrenite ovu komandu dok ste u osnovnom direktorijumu:
python3 setup.py sdist bdist_wheel
Ako pogledate direktorijum svog projekta, videćete dva nova direktorijuma (build i dist) u osnovnom direktorijumu.
- Korak 4: Instalirajte twine. To je paket koji je potreban za postavljanje paketa na PyPI.
Koristite ovu komandu:
pip install twine
- Korak 5: Postavite paket
Koristite ovu komandu:
twine upload dist/*
Od vas će biti zatraženo da unesete korisničko ime i lozinku. Ukoliko naziv vašeg paketa već nije zauzet, paket će biti objavljen online i dobićete link u terminalu.
Paket koji ste upravo objavili biće dostupan javnosti. Svi koji žele da koriste paket mogu ga preuzeti koristeći `pip`.
Na primer, paket koji smo objavili može se preuzeti na sledeći način:
pip install primechecker==1.0.0
Najbolje prakse za kreiranje Python paketa
- Obratite pažnju na Python standarde pakovanja: Iako ste slobodni da odlučite o vrsti paketa koji kreirate, uvek imajte na umu da Python paketi imaju standarde kojih se treba pridržavati. Pre nego što počnete da pišete kod, proverite ove standarde na https://packaging.python.org/.
- Testirajte svoj paket pre objavljivanja: Greške su česte u programiranju. Kreirajte skripte za generisanje automatizovanih testova, naročito kada pravite veće pakete. Na taj način ćete obezbediti da postavljate pakete bez grešaka.
- Verzionisanje: Odgovarajući paket treba da prati semantičko verzionisanje. Paket koji smo napravili u demonstraciji ima brojeve 1.0.0. Prvi broj (1) je glavna verzija, drugi broj (0) je manja verzija, a poslednji broj je oznaka zakrpe.
- Navedite sve zavisnosti: U zavisnosti od vaših potreba, možete imati različite zavisnosti ili druge pakete u okviru vašeg paketa. Trebalo bi da navedete sve zavisnosti u opisu vašeg paketa prilikom postavljanja. Za dodavanje i upravljanje ovim zavisnostima možete koristiti alate poput `setuptools` ili `poetry`.
- Koristite kontrolu verzija: Programiranje je kontinuiran proces. Možete nastaviti sa nadogradnjom ili poboljšanjem svog paketa kako biste dodali nove funkcije ili ga učinili efikasnijim. Možda ćete želeti da pozovete saradnike. Možete postaviti kod svog paketa na platforme kao što su GitHub ili GitLab kako bi vaš kod bio dostupan i kako biste omogućili saradnju.
- Dokumentujte svoj kod: Paket koji smo kreirali je bio u svrhu demonstracije. Međutim, ukoliko nameravate da delite takav paket sa javnošću ili sa članovima tima, neophodno je generisati dokumentaciju koja će voditi korisnike. Možete koristiti alate poput `Pydoc` ili `Sphinx` za generisanje dokumentacije.
Gde još mogu postaviti Python pakete?
Iako je Python Package Index (PyPI) zvanično spremište za Python pakete, to ne znači da ste ograničeni samo na njega. Neki faktori koje treba uzeti u obzir pri odlučivanju gde ćete postaviti svoj Python paket su veličina datoteka, priroda paketa, nivo podrške koji je potreban i vaša ciljna publika.
Ovo su druga mesta gde možete postaviti svoje Python pakete:
- GitHub: GitHub je najveća platforma za hostovanje koda. Možete kreirati repozitorijum i dodati svoj Python paket kao ZIP datoteku za dalju distribuciju.
- Conda: Conda je menadžer paketa koji možete koristiti za svoje Python pakete. Ova platforma je popularna među stručnjacima za nauku o podacima. Kreirajte nalog na Condi i počnite sa postavljanjem svojih paketa za distribuciju.
- PyPI ogledala: Postoji mnogo PyPI ogledala koja reflektuju sadržaj PyPI platforme. Izaberite ono koje odgovara vašim potrebama za hostovanje paketa.
Zaključak
Sada imate sve neophodne korake za kreiranje Python paketa i njihovo postavljanje na internet. Naš primer je bio jednostavan, ali vi se možete igrati i kreirati složenije pakete. Uvek obratite pažnju na odgovarajuću strukturu direktorijuma prilikom pravljenja Python paketa.