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.
Table of Contents
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.
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í).
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.
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_packagessetup(
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ě.