Dowiedz się, jak tworzyć, rozpowszechniać i używać pakietów w Pythonie, korzystając z tego przewodnika.

Wyobraź sobie zniechęcające zadanie tworzenia kompleksowej aplikacji ograniczonej do jednego pliku Pythona. Chociaż technicznie wykonalne, jest to sprzeczne z podstawowymi zasadami tworzenia wydajnego, łatwego w utrzymaniu i wielokrotnego użytku oprogramowania. Z tych powodów pakiety i moduły są niezbędne do budowania i rozwijania oprogramowania.

Co to jest pakiet?

W Pythonie pakiet umożliwia zorganizowanie razem logicznie powiązanych modułów i zasobów. Jest to katalog zawierający wiele modułów Pythona, podpakietów i innych zasobów.

Pakiety zapewniają hierarchiczną strukturę, umożliwiającą organizowanie kodu projektu na różnych poziomach abstrakcji.

Różnica między pakietami a modułami

Chociaż możesz używać obu pakietów i moduły do ​​organizowania kodu, istnieją między nimi różnice:

  • Moduł: Moduł to plik zawierający kod Pythona. Definiuje funkcje, klasy, zmienne i inne obiekty, które można importować i używać w kodzie.
  • Pakiet: Pakiet jest zbiorem jednego lub więcej modułów i może również zawierać podpakiety.

Jak utworzyć pakiet w Pythonie

Aby utworzyć pakiet, wykonaj następujące kroki.

Krok 1: Utwórz katalog projektu

Zacznij od utworzenia katalogu projektu.

study_bud/

Krok 2: Utwórz katalog pakietów

Wewnątrz katalogu projektu utwórz inny katalog, który będzie służył jako katalog pakietów. Nadaj mu zrozumiałą nazwę, która reprezentuje cel lub funkcjonalność pakietu. Katalog pakietów będzie zawierał moduły i podpakiety związane z twoim pakietem.

study_bud/
math_tool/

Krok 3: Zdefiniuj plik Package __init__.py

W katalogu pakietu utwórz __init__.py plik. Obecność __init__.py plik sprawia, że ​​katalog jest pakietem w Pythonie.

Jeśli musisz zainicjować kod za każdym razem, gdy korzystasz z pakietu, dołącz go do __init__.py plik, w przeciwnym razie jest zawsze pusty.

study_bud/
math_tool/
__init__.py

Krok 4: Dodaj moduły do ​​pakietu

W katalogu pakietu dodaj moduły języka Python (.py), które definiują funkcje, klasy lub zmienne.

Moduły te zawierają rzeczywisty kod, który zapewnia funkcjonalność Twojego pakietu. W katalogu pakietu można utworzyć wiele modułów.

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

Krok 5: Dodaj podpakiety do pakietu

Jeśli Twój pakiet musi mieć strukturę hierarchiczną lub zawierać różne funkcje, możesz tworzyć podpakiety w katalogu pakietów.

Pakiet podrzędny to po prostu inny katalog pakietów w głównym katalogu pakietów. Każdy podpakiet powinien mieć swój __init__.py plik. Podpakiety pozwalają na dalszą organizację i separację kodu.

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

W tych krokach utworzyłeś plik narzędzie_matematyczne pakiet, dodano dwa moduły (operacje.py I statystyki.py) oraz dwa podpakiety geometria I rachunek różniczkowy każdy ma swoje moduły.

Wykonując te kroki, możesz łatwo organizować powiązane funkcje za pomocą pakietu i podpakietów, co ułatwia zarządzanie kodem i jego ponowne wykorzystanie.

Jak pracować z pakietem w Pythonie

Aby pracować z pakietem, musisz go zaimportować. The import I z słowa kluczowe umożliwiają importowanie i używanie pakietu w kodzie.

import math_tool # entire package

Możesz także użyć notacji kropkowej do importowania modułów, pakietów podrzędnych lub określonych właściwości z pakietu. Notacja kropkowa umożliwia poruszanie się po strukturze katalogów pakietów. Notacja kropkowa sprawia, że ​​importowane dane są bardziej czytelne i łatwiejsze w utrzymaniu.

from math_tool.operations import add, multiply # specific functions

W powyższym kodzie nawigowałeś z katalogu pakietu (narzędzie_matematyczne) do operacje używając notacji kropkowej i zaimportowałem dwie funkcje (dodać I zwielokrotniać).

Bezwzględny import vs. Import względny

Z absolutnyimport, określasz pełną ścieżkę z pakietu najwyższego poziomu (pakietu głównego) do żądanego modułu lub pakietu podrzędnego. Jest to najbardziej powszechny i ​​zalecany sposób importowania modułów i pakietów w Pythonie.

from math_tool.geometry.shapes import parallelogram

Zaczynając od narzędzie_matematyczne wejdź do geometria podpakiet, znajdź kształty.py moduł i zaimportuj plik równoległobok funkcjonować.

Chwila względnyimport umożliwiają dokonywanie importów względem lokalizacji bieżącego modułu przy użyciu notacji kropkowej w celu określenia importów względnych.

Na przykład wewnątrz rachunek/integracje.py module, możesz użyć importu względnego, aby zaimportować funkcję z pliku kształty.py moduł w geometria podpakiet.

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

Podwójna kropka („..”) mówi Pythonowi, aby:

  • Zacznij od katalogu podpakietu (rachunek różniczkowy), gdzie moduł (integracje.py) istnieje.
  • Przejdź do pakietu nadrzędnego (narzędzie_matematyczne) katalog podpakietu.
  • Znaleźć geometria podpakiet w katalogu nadrzędnym.
  • Wejdź do kształty.py moduł i import romb z tego.

Tak więc notacja z kropką reprezentuje liczbę katalogów, do których można przejść z bieżącego katalogu modułu.

Import aliasów dla wygody

Możesz przypisać alias do importu, ułatwiając odwoływanie się do niego w kodzie. Aliasy są przydatne w przypadku długich nazw pakietów lub modułów.

Aby przypisać alias, użyj Jak słowo kluczowe.

import math_tool.calculus as cal

Jak dystrybuować swój pakiet w Pythonie

Python zapewnia narzędzia i platformę do tworzenia i dystrybucji pakietów. Dystrybucja pakietu umożliwia udostępnianie kodu innym programistom, promowanie współpracy, uproszczenie instalacji dla użytkowników i wniesienie wkładu w szerszą społeczność Pythona.

Krok 1: Utwórz konto na PyPI

Indeks pakietów Pythona (PyPI) jest domyślnym repozytorium pakietów Pythona. Możesz opublikować swoje pakiety na PyPI, aby inni programiści mogli je łatwo znaleźć i zainstalować.

Pamiętaj o swoim nazwa użytkownika I hasło ponieważ będziesz ich potrzebować do uwierzytelnienia podczas przesyłania paczki do PyPI.

Te narzędzia ułatwiają konfigurowanie, budowanie i przesyłanie pakietu dystrybucyjnego za pomocą jednego polecenia.

pip install build wheel twine

Krok 3: Utwórz plik setup.py

Aby dystrybuować swój pakiet, utwórz plik plik setup.py w katalogu głównym twojego projektu. The konfiguracja.py zawiera metadane dotyczące twojego pakietu, takie jak jego nazwa, wersja, autor, opis, zależności i inne.

Narzędzia do zarządzania pakietami będą używać konfiguracja.py plik, aby skonfigurować i zbudować pakiet.

#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',
],
)

Krok 4: Zbuduj pakiet

Gdy masz konfiguracja.py plik gotowy, możesz go użyć do zbudowania pakietu dystrybucyjnego. W terminalu lub wierszu polecenia przejdź do katalogu zawierający konfiguracja.py plik i wykonaj następujące polecenie:

python setup.py sdist bdist_wheel

To polecenie generuje plik dyst katalog zawierający źródłowy pakiet dystrybucyjny (.tar.gz) i pakiet dystrybucyjny koła (.whl). Zobaczysz także a zbudować I informacje informator.

Krok 5: Prześlij pakiet do PyPI

Mając gotowy pakiet, możesz przesłać go do PyPI.

Wykonaj następujące polecenie:

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

Odwiedź swoją PyPI stronę zarządzania projektami, aby zobaczyć swój pakiet.

Teraz inni programiści, którzy uznają Twój pakiet za przydatny, mogą go zainstalować i używać lokalnie.

Jak zainstalować pakiet Pythona

Menedżerowie pakietów, tacy jak pip ułatwiają instalację i zarządzanie pakietami Pythona z różnych źródeł, w tym Python Package Index (PyPI). Aby zainstalować pakiet za pomocą pypeć, otwórz terminal lub wiersz polecenia i użyj następującego polecenia:

pip install 

Aby zobaczyć wszystkie dostępne polecenia i opcje dla pypeć Użyj --pomoc opcja.

Pisanie czystych modułów

Pakiety zawierają moduły i podpakiety, które z kolei zawierają inne moduły. Dobrą praktyką jest modularyzacja kodu, zwłaszcza podczas pracy nad większymi projektami, ponieważ promuje to lepszą organizację kodu i czytelność. Dlatego ważne jest, aby podczas programowania w Pythonie pisać moduły w sposób przejrzysty.