Egy képzeletbeli helyzet, ami nagyon életszerű
Képzeld el, hogy egy Python projektben dolgozol, rengeteg csomagra van szükséged, és fontos lenne számodra, hogy mindenkinek, aki a projekten dolgozik, ugyanaz a környezete legyen. Továbbá az is remek lenne, ha egy esetleges új kollégának nem kellene órákat eltölteni a szükséges csomagok felkutatásával/telepítésével. Ezekre a problémákra jelent megoldást a Pipfile és Pipfile.lock.
Mi is ez a két fájl?
A pip a Python csomagkezelője, a virtualenv pedig arra szolgál, hogy Python környezeteket tudjunk kezelni és létrehozni. Ennek tulajdonképpen az ötvözéseként használható a Pipfile és Pipfile.lock.
Ezen fájlok rögzítik egy python környezetbe települt összes csomagot és azoknak a függőségeit.
A Pipfile felépítése

source: Megadja, hogy honnan töltjük le a csomagokat. Ez legtöbb esetben ugyanaz mindenkinek, de persze saját URL is megadható, amennyiben szükséges.
packages: Itt találhatók a projekt által használt csomagok.
dev-packages: Ebben a részben a fejlesztők és tesztelők által használt csomagok szerepelnek. (Például egy code clean package nem szükséges egy végfelhasználó számára, de egy fejlesztőnek hasznos lehet.)
requires: A Python verzióját adja meg.
Hogyan működik a gyakorlatban?
A pipfile-t létre tudjuk hozni a következő paranccsal:
pipenv install
Ezt követően ha a pipfile-ba beírunk egy csomagot, és lefuttatjuk újra a parancsot, a környezet kibővül a csomaggal.
Majd átmásolva a fájlokat, ugyanezen paranccsal egy másik python környezetben (új kolléga gépe) telepíthetőek ugyanazon csomagok.
Miért fontos a Pipfile.lock?
A Pipfile tartalmazza a projektben szükséges csomagokat, de a Pipfile.lock ennél is tovább megy. Ez a fájl rögzíti a pontos verziószámokat és a háttérben használt csomagokat is, így biztosítva, hogy mindenki ugyanazt a környezetet használja, elkerülve a verzióinkompatibilitási problémákat. A lock file a pipfile-ban deklarált függőségek aktuális verzióit tárolja. A pipfile-ban megadott függőségek mellett a háttérfüggőségeket is rögzíti, amik a pipfileban nem szerepelnek.
Ha dev package-ek is kellenek…
Amennyiben a „dev-packages”-ben felsorolt csomagokra is szükségünk van, akkor így azok is telepítésre kerülnek:
pipenv install –dev
Összefoglalva
A Pipfile és Pipfile.lock fájlok nagy szolgálatot tudnak tenni a különböző python package-ek és verziók menedzselésében. Segítségükkel egyszerűen és gyorsan telepíthetjük a projektünkhöz szükséges összes csomagot, elkerülve a kompatibilitási problémákat és időt spórolva. Ha Python projektekkel foglalkozol, mindenképp érdemes megismerkedned velük.


