Adaptiware Logo
Python

Ako zamknúť požiadavky pomocou pip-tools

Kika
3 min read
Ako zamknúť požiadavky pomocou pip-tools

Jednoduché inštrukcie na uzamknutie požiadaviek v Python projekte pomocou pip-tools

Uzamknutie závislostí pomocou pip-compile

Názory sa líšia o tom, ako by sa mali používať lock súbory, v závislosti od toho, či je projekt hlavná aplikácia, alebo či je projekt vlastne knižnica, ktorá má byť spotrebovaná aplikáciou alebo inou knižnicou.

Lock súbory sú nepochybne užitočné, ak vyvíjate akúkoľvek aplikáciu. Python nemá koncept lock súborov, rovnako sa môže tvrdiť, že Python nemá žiadne súbory závislostí balíčkov vôbec, a preto máme veľa možností mimo hlavného Python tímu, ako sú setup.py, Pipfile, a najbežnejší requirements.txt ako vzor pre Pip. Tento blog vám ukáže, ako uzamknúť požiadavky príkazom pip-compile (poskytovaným pip-tools).

Najprv potrebujeme čisté virtuálne prostredie vytvorené pomocou virtualenv.

Inštalácia balíčka virtualenv

Balíček virtualenv je potrebný na vytvorenie virtuálnych prostredí. Môžete ho nainštalovať pomocou pip:

SHELL
pip install virtualenv
Vytvorenie virtuálneho prostredia

Na vytvorenie virtuálneho prostredia musíte špecifikovať cestu.

Napríklad na vytvorenie jedného v lokálnom adresári s názvom 'python3env', napíšte nasledovné:

SHELL
virtualenv python3env

Potom musíte aktivovať Python prostredie spustením nasledujúceho príkazu:

Mac OS / Linux
SHELL
source python3env/bin/activate
Windows
SHELL
python3env\Scripts\activate

Všetky príkazy Python, ktoré teraz použijete, budú fungovať s vaším virtuálnym prostredím.

Inštalácia pip-tools a uzamknutie požiadaviek

Teraz musíte aktivovať virtuálne prostredie na inštaláciu pip-tools

SHELL
pip install pip-tools

Keď je balíček nainštalovaný, musíte vytvoriť súbor requirements.in. Tento súbor je miesto, kde definujete závislosti najvyššej úrovne vášho projektu (podobné ako pipenv's Pipfile alebo pyproject.toml v poetry). Základný príklad môže vyzerať takto:

Python
Django==5.0.*
psycopg2
celery>5.1

Na "uzamknutie" týchto závislostí môžete spustiť:

SHELL
pip-compile --output-file=requirements.txt requirements.in

Toto vygeneruje štandardný súbor requirements.txt so všetkými závislosťami. Tu je súbor:

Python
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
#    pip-compile
#

amqp==5.2.0
    # via kombu
asgiref==3.7.2
    # via django
billiard==4.2.0
    # via celery
celery==5.3.6
    # via -r requirements.in
click==8.1.7
    # via
    #   celery
    #   click-didyoumean
    #   click-plugins
    #   click-repl
click-didyoumean==0.3.0
    # via celery
click-plugins==1.1.1
    # via celery
click-repl==0.3.0
    # via celery
django==5.0
    # via -r requirements.in
kombu==5.3.5
    # via celery
prompt-toolkit==3.0.43
    # via click-repl
psycopg2==2.9.9
    # via -r requirements.in
python-dateutil==2.9.0.post0
    # via celery
six==1.16.0
    # via python-dateutil
sqlparse==0.4.4
    # via django
typing-extensions==4.10.0
    # via asgiref
tzdata==2024.1
    # via celery
vine==5.1.0
    # via
    #   amqp
    #   celery
    #   kombu
wcwidth==0.2.13
    # via prompt-toolkit

Nemali sme pytz v našich requirements.in, ale je zahrnutý v requirements.txt, pretože je požadovaný pomocou django (čo pip-compile láskavo vypíše do súboru).

MAKEFILE vám umožňuje spustiť make requirements.txt a bude aktualizovaný iba vtedy, ak sa súbor requirements.in zmenil od posledného vygenerovania requirements.txt.

Príklad:

Python
requirements.txt: requirements.in
pip-compile --upgrade --output-file=$@ requirements.in

Inštalácia závislostí je jednoduchá ako:

SHELL
pip install -r requirements.txt
#python#pip#pip-tools#requirements#dependencies#virtualenv#lock#compile

Kika

Backend Developer at Adaptiware