Last modified: July 04, 2024

This article is written in: 🇵🇱

PIP i PyPI

PIP (Python Package Installer) to menedżer pakietów dla języka Python, który ułatwia zarządzanie pakietami z repozytorium PyPI (Python Package Index). PIP pozwala na łatwą instalację, aktualizację i usuwanie pakietów, co jest nieocenione przy rozbudowie projektów i zarządzaniu zależnościami.

Czym są menadżery pakietów?

Menadżery pakietów to narzędzia, które odgrywają kluczową rolę w zarządzaniu oprogramowaniem, ułatwiając procesy instalacji, aktualizacji, konfiguracji i usuwania pakietów oprogramowania w systemie komputerowym. Są one niezwykle przydatne w różnych środowiskach – od systemów operacyjnych po specyficzne platformy programistyczne, takie jak Python, Ruby czy JavaScript. Oto kilka głównych celów i korzyści z używania menadżerów pakietów:

Instalacja PIP

W nowszych wersjach Pythona, PIP jest instalowany automatycznie razem z interpreterem. Jeśli jednak z jakiegoś powodu nie masz zainstalowanego PIP, istnieje kilka metod jego instalacji:

I. Najprostsze rozwiązanie to ponowna instalacja Pythona, co zapewni, że PIP będzie dołączony do instalacji.

II. Jeśli preferujesz manualną instalację PIP, możesz pobrać skrypt instalacyjny get-pip.py z oficjalnej strony.

python get-pip.py

III. Po instalacji warto sprawdzić, czy PIP działa poprawnie:

pip help

Podstawowe operacje z PIP

PIP oferuje szeroki wachlarz funkcji, które ułatwiają zarządzanie pakietami Pythona:

pip install nazwa_pakietu

pip show nazwa_pakietu

pip list

Możesz zapisać listę zainstalowanych pakietów wraz z ich wersjami do pliku requirements.txt, co jest pomocne przy replikacji środowiska projektu:

pip freeze > requirements.txt

pip install -r requirements.txt

pip uninstall nazwa_pakietu

PIP umożliwia także wyszukiwanie pakietów dostępnych w PyPI:

pip search nazwa_pakietu

Aktualizacja pakietów

Aktualizacja pakietów jest kluczowym elementem utrzymania bezpieczeństwa i efektywności aplikacji. Dzięki menedżerom pakietów, jak pip w Pythonie, proces ten jest znacznie uproszczony.

pip install --upgrade nazwa_pakietu

pip list --outdated

Następnie możesz zaktualizować każdy z nich przy użyciu pip install --upgrade. Jeśli chcesz zaktualizować wszystkie przestarzałe pakiety jednocześnie, możesz użyć pętli w Bashu:

pip list --outdated | grep -v 'Package' | awk '{print $1}' | xargs -n1 pip install --upgrade

pip install --upgrade pip

Czym jest setup.py?

setup.py jest tradycyjnym plikiem konfiguracyjnym w projektach Python, który służy do definiowania metadanych projektu oraz zarządzania zależnościami i dystrybucją pakietu. Jest to część standardowego narzędzia setuptools, które pomaga w pakowaniu i dystrybucji bibliotek Pythona.

Zawartość pliku setup.py

Plik setup.py jest kluczowym elementem w pakowaniu i dystrybucji bibliotek Pythona. Plik ten powinien zawierać metadane dotyczące pakietu, informacje o zależnościach oraz konfigurację niezbędną do poprawnego zainstalowania pakietu. Oto główne elementy, które powinien zawierać plik setup.py:

Teoretyczna struktura repozytorium

Przykładowa struktura repozytorium dla projektu Pythonowego może wyglądać następująco:

nazwa_projektu/
│
├── nazwa_projektu/
│ ├── init.py
│ ├── modul1.py
│ └── modul2.py
│
├── tests/
│ ├── init.py
│ ├── test_modul1.py
│ └── test_modul2.py
│
├── README.md
├── LICENSE
└── setup.py

Przykładowy plik setup.py

Dla przykładowej struktury repozytorium plik setup.py mógłby wyglądać tak:

from setuptools import setup, find_packages

setup(
    name='nazwa_projektu',
    version='0.1.0',
    description='Krótki opis mojego projektu',
    long_description=open('README.md').read(),
    long_description_content_type='text/markdown',
    author='Imię Nazwisko',
    author_email='email@example.com',
    url='https://github.com/uzytkownik/nazwa_projektu',
    packages=find_packages(),
    install_requires=[
        'biblioteka1>=1.0',
        'biblioteka2>=2.0',
    ],
    license='MIT',
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.7',
    ],
    keywords='przykladowe slowa kluczowe',
)

Ten plik setup.py zawiera podstawowe informacje o pakiecie, w tym zależności, metadane oraz dodatkowe klasyfikatory, które pomagają w kategoryzacji pakietu na PyPI.

Relacja między setup.py, pip i PyPI

Jak opublikować własny pakiet na PyPI

Aby opublikować pakiet na PyPI, należy wykonać kilka kroków:

I. Upewnij się, że Twój pakiet ma odpowiednio skonfigurowany plik setup.py. Powinien zawierać wszystkie niezbędne informacje, takie jak nazwa pakietu, wersja, autor, zależności itp.

II. Utwórz konto na PyPI i na Test PyPI, które można użyć do testowania przesyłania pakietów.

III. Użyj setuptools do zbudowania swojego pakietu. Możesz to zrobić, uruchamiając poniższe polecenie w katalogu projektu:

python setup.py sdist bdist_wheel

To polecenie utworzy archiwum źródłowe oraz koło dystrybucyjne, które są preferowanym formatem dystrybucji.

IV. Przed oficjalnym opublikowaniem pakietu możesz przetestować proces przesyłania na Test PyPI, używając twine:

twine upload --repository testpypi dist/*

Po przetestowaniu, możesz zalogować się i sprawdzić, czy pakiet jest dostępny.

V. Jeśli wszystko jest gotowe, możesz opublikować swój pakiet na oficjalnym PyPI za pomocą:

twine upload dist/*

VI. Po opublikowaniu, Twój pakiet powinien być dostępny na PyPI i gotowy do instalacji przez każdego za pomocą:

pip install nazwa_twojego_pakietu

Pamiętaj, że utrzymanie pakietu to również aktualizowanie go o nowe funkcje, poprawki błędów oraz aktualizacje zależności, co jest ważne dla utrzymania dobrych praktyk bezpieczeństwa i kompatybilności.

Linki

Spis Treści

    PIP i PyPI
    1. Czym są menadżery pakietów?
    2. Instalacja PIP
    3. Podstawowe operacje z PIP
    4. Aktualizacja pakietów
    5. Czym jest setup.py?
      1. Zawartość pliku setup.py
      2. Teoretyczna struktura repozytorium
      3. Przykładowy plik setup.py
      4. Relacja między setup.py, pip i PyPI
    6. Jak opublikować własny pakiet na PyPI
    7. Linki