Průvodce pro začátečníky vytvářením a používáním balíčků v Pythonu

Představte si skličující úkol vývoje komplexní aplikace omezené na jeden Python soubor. I když je to technicky proveditelné, jde to proti základním principům vytváření efektivního, udržovatelného a opakovaně použitelného softwaru. Z těchto důvodů jsou balíčky a moduly nezbytné pro vytváření a vývoj softwaru.

Co je balíček?

V Pythonu poskytuje balíček způsob, jak organizovat logicky související moduly a zdroje dohromady. Je to adresář, který obsahuje více modulů Pythonu, dílčích balíčků a dalších zdrojů.

Balíčky poskytují hierarchickou strukturu, která vám umožňuje organizovat kód vašeho projektu na různých úrovních abstrakce.

Rozdíl mezi balíčky a moduly

I když k uspořádání kódu můžete použít balíčky i moduly, existují mezi nimi rozdíly:

  • Modul: Modul je soubor, který obsahuje kód Pythonu. Definuje funkce, třídy, proměnné a další objekty, které můžete importovat a používat ve svém kódu.
  • Balíček: Balíček je kolekce jednoho nebo více modulů a může také obsahovat dílčí balíčky.

Jak vytvořit balíček v Pythonu

Chcete-li vytvořit balíček, postupujte podle následujících kroků.

Krok 1: Vytvořte adresář projektu

Začněte vytvořením adresáře projektu.

 study_bud/

Krok 2: Vytvořte adresář balíčku

V adresáři projektu vytvořte další adresář, který bude sloužit jako adresář balíčku. Dejte mu smysluplný název, který představuje účel nebo funkčnost balíčku. Adresář balíčku bude obsahovat moduly a dílčí balíčky související s vaším balíčkem.

 study_bud/
    math_tool/

Krok 3: Definujte soubor Package __init__.py

V adresáři balíčku vytvořte soubor __init__.py. Přítomnost souboru __init__.py je to, co dělá z adresáře balíček v Pythonu.

  6 nejlepších nástrojů pro správu konfigurace v DevOps

Pokud potřebujete inicializovat kód při každém použití balíčku, zahrňte jej do souboru __init__.py, jinak je vždy prázdný.

 study_bud/
    math_tool/
        __init__.py

Krok 4: Přidejte moduly do balíčku

Do adresáře balíčku přidejte moduly Pythonu (.py), které definují funkce, třídy nebo proměnné.

Tyto moduly obsahují skutečný kód, který poskytuje funkčnost vašeho balíčku. V adresáři balíčku můžete vytvořit více modulů.

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

Krok 5: Přidejte do balíčku dílčí balíčky

Pokud váš balíček potřebuje mít hierarchickou strukturu nebo obsahuje odlišné funkce, můžete vytvořit dílčí balíčky v adresáři balíčku.

Dílčí balíček je jednoduše další adresář balíčku v hlavním adresáři balíčku. Každý dílčí balíček by měl mít svůj soubor __init__.py. Dílčí balíčky umožňují další organizaci a oddělení kódu.

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

V těchto krocích jste vytvořili balíček math_tool, přidali dva moduly (operations.py a statistics.py) a dva dílčí balíčky geometry a calculus, z nichž každý má své moduly.

Pomocí těchto kroků můžete snadno uspořádat související funkce pomocí balíčku a dílčích balíčků, což usnadňuje správu a opětovné použití kódu.

Jak pracovat s balíčkem v Pythonu

Chcete-li pracovat s balíčkem, musíte jej importovat. Klíčová slova import a from vám umožňují importovat a používat balíček ve vašem kódu.

 import math_tool 

Tečkovou notaci můžete také použít pro import modulů, dílčích balíčků nebo specifických vlastností z balíčku. Tečkový zápis umožňuje procházet adresářovou strukturou balíčku. Tečkovaná notace činí vaše importy čitelnějšími a snáze se udržuje.

 from math_tool.operations import add, multiply 

Ve výše uvedeném kódu jste přešli z adresáře balíčku (math_tool) do provozního modulu pomocí tečkové notace a importovali jste dvě funkce (sčítání a násobení).

  Jak zjistit, kdo sdílel váš příspěvek na Instagramu

Absolutní importy vs. relativní importy

Při absolutních importech zadáváte úplnou cestu z balíčku nejvyšší úrovně (kořenového balíčku) k požadovanému modulu nebo dílčímu balíčku. Toto je nejběžnější a doporučený způsob importu modulů a balíčků v Pythonu.

 from math_tool.geometry.shapes import parallelogram

Počínaje math_tool přejděte do dílčího balíčku geometry, najděte modul shape.py a importujte funkci rovnoběžníku.

Zatímco relativní importy umožňují provádět importy relativně k aktuálnímu umístění modulu pomocí tečkové notace k určení relativních importů.

Například v modulu calculus/integrations.py můžete použít relativní import k importu funkce z modulu shape.py v dílčím balíčku geometrie.

 
from ..geometry.shapes import rhombus

Dvojitá tečka (..“) říká Pythonu, aby:

  • Začněte z adresáře dílčího balíčku (calculus), kde modul (integrations.py) existuje.
  • Přejděte do nadřazeného adresáře balíčku (math_tool) dílčího balíčku.
  • Najděte dílčí balíček geometrie v nadřazeném adresáři.
  • Přejděte do modulu shape.py a importujte z něj kosočtverec.

Tečkový zápis tedy představuje počet adresářů, do kterých se má přejít z aktuálního adresáře modulu.

Alias ​​Imports pro pohodlí

Importu můžete přiřadit alias, aby bylo snazší na něj odkazovat v kódu. Aliasy jsou užitečné při práci s dlouhými názvy balíčků nebo modulů.

Chcete-li přiřadit alias, použijte klíčové slovo as.

 import math_tool.calculus as cal

Jak distribuovat svůj balíček v Pythonu

Python vám poskytuje nástroje a platformu pro vytváření a distribuci vašeho balíčku. Distribuce vašeho balíčku vám umožní sdílet váš kód s ostatními vývojáři, podporovat spolupráci, zjednodušit instalaci pro uživatele a přispívat do širší komunity Pythonu.

  Jak nastavit hodinová opakující se připomenutí na iPhone a iPad

Krok 1: Vytvořte si účet na PyPI

Index balíčku Python (PyPI) je výchozí úložiště pro balíčky Pythonu. Své balíčky můžete publikovat na PyPI, aby je ostatní vývojáři mohli snadno najít a nainstalovat.

Nezapomeňte si zapamatovat své uživatelské jméno a heslo, protože je budete potřebovat pro ověření při nahrávání balíčku do PyPI.

Krok 2: Nainstalujte nástroje pro správu balíčků

Tyto nástroje vám usnadní konfiguraci, sestavení a odeslání distribuovatelného balíčku pomocí jediného příkazu.

 pip install build wheel twine

Krok 3: Vytvořte soubor setup.py

Chcete-li distribuovat svůj balíček, vytvořte a soubor setup.py v kořenovém adresáři vašeho projektu. Soubor setup.py obsahuje metadata o vašem balíčku, jako je jeho název, verze, autor, popis, závislosti a další.

Nástroje pro správu balíčků použijí ke konfiguraci a sestavení vašeho balíčku soubor setup.py.

 
from setuptools import setup, find_packages

setup(
    name="<package name>",
    version='1.0.0',
    author="<Your Name>",
    description='A collection of mathematical utility functions',
    packages=find_packages(),
    install_requires=[
        'numpy',
        'scipy',
    ],
)

Krok 4: Sestavte balíček

Jakmile budete mít připravený soubor setup.py, můžete jej použít k vytvoření distribuovatelného balíčku. V terminálu nebo příkazovém řádku přejděte do adresáře obsahujícího soubor setup.py a spusťte následující příkaz:

 python setup.py sdist bdist_wheel

Tento příkaz vygeneruje adresář dist obsahující zdrojový distribuční balíček (.tar.gz) a distribuční balíček kola (.whl). Uvidíte také adresář sestavení a informace.

Krok 5: Nahrajte balíček do PyPI

Když je váš balíček připraven, můžete jej nahrát do PyPI.

Proveďte následující příkaz:

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

Navštivte svůj PyPI stránku projektového řízení, abyste viděli svůj balíček.

Nyní jej mohou lokálně nainstalovat a používat jiní vývojáři, kteří považují váš balíček za užitečný.

Jak nainstalovat balíček Python

Správci balíčků, jako je pip, usnadňují instalaci a správu balíčků Python z různých zdrojů, včetně Python Package Index (PyPI). Chcete-li nainstalovat balíček pomocí pip, otevřete terminál nebo příkazový řádek a použijte následující příkaz:

 pip install <package_name>

Chcete-li zobrazit všechny dostupné příkazy a volby pro pip, použijte volbu –help.

Psaní čistých modulů

Balíčky obsahují moduly a dílčí balíčky, které zase obsahují další moduly. Je dobrou praxí modularizovat kód, zejména při práci na větších projektech, protože podporuje lepší organizaci kódu a čitelnost. Při vývoji v Pythonu je tedy důležité psát moduly srozumitelně.