Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Python
Code

Ako napísať, zabaliť a distribuovať knižnicu napísanú v Pythone

by
Difficulty:IntermediateLength:MediumLanguages:

Slovak (Slovenčina) translation by Ryan (you can also view the original English article)

Python je skvelý programovací jazyk, ale balíčkovanie je jedným z najslabších článkov. Je to medzi komunitou dosť známy fakt. Proces inštalácie, importovania, používania a tvorby balíčkov sa za posledné roky ohromne zlepšil, ale ešte stále sa nevyrovná novším jazykom ako je Go alebo Rust.

V tomto návode si naučíme všetko, čo potrebujete vedieť o písaní, balení a distribúcii vašich balíčkov.

Ako napísať knižnicu v Pythone

Knižnica je kolekcia niekoľkých modulov, ktoré sú zabalené do jedného balíčka. To znamená, že všetky tieto moduly sú v jednom priečinku, ktoré Python vyhľadáva.

Napíšme si malý balíček v Pythone, aby sme si predstavili tento koncept.

Balíček Pathology

Python 3 má skvelý objekt Path, ktorý je ohromne lepší oproti modulu os.path v Pythone 2. Ale chýba tomu jedna dôležitá funkcia—vyhľadávanie cesty na vybraný skript. To je veľmi dôležité, keď chcete nájsť súbory relatívne k vybranému skriptu.

Vo väčšine prípadov skript môže byť nainštalovaný v akomkoľvek umiestnení, takže nemôžete používať absolútne cesty. Názov projektu je ľubovoľný, takže nemôžete používať ani relatívne cesty. Keď chcete sa dostať do podpriečinka, musíte zistiť cestu k súčasnému priečinku.

Pozrite sa, ako sa to robí v Pythone:

Keď sa chcete dostať k súboru "file.txt", ktorý sa nachádza v podpriečinku "data", môžete použiť tento kód: print(open(str(script_dir/'data/file.txt').read())

Pomocou balíčka pathology môžete použiť metódu script_dir:

Balíček pathology je veľmi jednoduchý. Vytvorí vlastnú triedu Path z balíčka pathlib a pridá statickú metódu script_dir(), ktorá vráti cestu k volanému skriptu.

Implementácia:

Kvôli multi-platformovej implementácií pathlib.Path môžete derivovať priamo z tej triedy, ktorá rozširuje špecifickú podtriedu (PosixPath alebo WindowsPath). Rezolúcia priečinka skriptu využíva modul inspect, ktorý vyhľadáva funkciu, ktorá ten modul vyvoláva a jej atribút súbora.

Testovanie balíčka

Keď vytvárate niečo viac, než nejaký jednorázový skript, mali by ste ho otestovať. Modul pathology nie je žiadnou výnimkou. Toto sú testy vytvorené pomocou štandardného unit testing frameworku:

Path v Pythone

Balíčky v Pythone musia byť nainštalované vo vyhľadavanej ceste, aby mohli byť importované modulmi v Pythone. Vyhľadávaná cesta je zoznam priečinkov a je dostupná v sys.path: Toto je môj súčasný sys.path:

Vedzte, že prvý prázdny riadok reprezentuje priečinok, na ktorom bol tento skript spustený. Moduly môžete importovať z priečinkov vypísaných vyššie. Taktiež môžete pridávať alebo odstraňovať priečinky do/zo sys.path.

Taktiež môžete použiť premennú PYTHONPATH alebo jednu z iných možností. Balíčky zo site-packages sú štandardne zahrnuté, pretože sa tam inštalujú balíčky pomocou pip.

Ako zabaliť knižnicu

Teraz, keď máme napísaný kód a testy, teraz ich môžeme zabaliť do knižnice. Cez Python sa to dá jednoducho pomocou modulu setup. Vytvorte súbor s názvom setup.py v hlavnom priečinku knižnice. Pre vytvorenie zdrojovej distribúcie, spustite: python setup.py sdist

Pre vytvorenie binárnej distribúcie, spustite: python setup.py bdist_wheel

Toto je súbor setup.py balíčka pathology:

Obsahuje dosť metadát spolu s položkou "packages", ktorá používa funkciu find_packages() importovanú zo setuptools k nájdeniu podbalíčkov

Teraz vytvoríme zdrojovú distribúciu:

Upozornilo ma, že používam neštandardný súbor README.md. Toto upozornenie sa dá bezpečne ignorovať. Výsledkom je tar.gz súbor pod priečinkom dist:

A tu je binárna distribúcia:

Balíček pathology obsahuje iba čisté Python moduly, takže môže byť vytvorený aj univerzálny balíček. Ak váš balíček obsahuje aj rozšírenia v jazyku C, musíte vytvoriť samostatný balíček pre každú platformu:

Keď chcete vedieť viac o balíčkovaní knižníc v Pythone, pozrite Ako písať vlastné balíčky v Pythone.

Ako distribuovať balíček

Python má centrálny repozitár balíčkov nazvaný PyPI (Python Packages Index). Keď inštalujete balíček pomocou pip, pip ho stiahne z PyPI (pokiaľ neurčite iný repozitár). Aby sme distribuovali náš balíček pathology, potrebujeme ho odovzdať do PyPI a pridať k tomu nejaké metadáta, ktoré PyPI vyžaduje. Postupujte podľa týchto krokov:

  • Vytvorte si účet na PyPI (iba raz).
  • Zaregistrujte váš balíček.
  • Odovzdajte váš balíček.

Vytvorenie účtu

Účet môžete vytvoriť na stránkach PyPI. Potom vytvorte súbor .pypirc vo vašom domácom priečinku:

Pre účely testovania môžeme pridať server "pypitest" do súbora .pypirc:

Registrácia balíčka

Ak toto je prvé vydanie vašeho balíčka, potrebujete ho zaregistrovať pomocou PyPI. Použite príkaz register súbora setup.py. Vedzte, že to budem vydávať na testovací repozitár:

Odovzdanie balíčka

Kedže je už balíček zaregistrovaný, môžeme ho odovzdať. Odporúčam použiť twine, pretože je bezpečnejší. Nainštalujte ho pomocou pip install twine. Potom odovzdajte váš balíček pomocou twine a určite jeho heslo (ktoré je v tomto útržku zakryté):

Keď chcete vedieť viac o distribúcii balíčkov, pozrite Ako zdieľať vaše balíčky napísané v Pythone

Záver

V tomto návode sme sa pozreli na celý proces písania balíčka v Pythone, balenia a distribúcie pomocou PyPI. Teraz by ste mali mať všetky nástroje k písaniu a zdieľaniu vašich knižníc do sveta.

Navyše, neváhajte a pozrite sa, čo máme k dispozícii v obchode a opýtajte sa pomocou komentárov dole.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.