Stav balíčkovacího systému – nebo spíš v množném čísle systémů – velmi dlouhou dobu nebyl ani zdaleka ideální. Uveďme několik známějších zádrhelů:
Asi není vůbec divu, že pomalu kdo mohl, napsal si balíčkovací systém vlastní. A jedním z takových systémů je právě Conda.
Conda původně vznikla z potřeby snadno instalovat a starat se o potřebné pythoní balíčky včetně všech svých – a to i externích! – závislostí. Dnes platí, že:
Conda je jazykově (Python, R, C, Java…) a systémově (Linux, Windows, OS X) nezávislý systém pro správu softwarových balíčků, jejich závislostí a virtuálních prostředí.
Kdyby se Conda omezovala pouze na pythoní balíčky, nebyl by již dnes moc důvod ji používat, ale její velikou výhodou je právě to, že je prakticky univerzálně použitelná nejen pro Python, ale i pro jiné jazyky a dokonce i téměř systémové komponenty. A samozřejmě pro správu virtuálních prostředí.
Condu můžete získat ve dvou různých podobách:
Pokročilý uživatel si tak asi nainstaluje Minicondu, aby si vytvořil prostředí přesně podle svých potřeb, běžný uživatel pak Anacondu, aby se nemusel prakticky o nic starat.
Společnost Continuum Analytics udržuje (kromě vlastních instalací Anacondy a Minicondy) především hlavní repozitář balíčků Anaconda.org.
V něm najdeme jí podporované součásti balíku Anaconda, ale také balíky v dalších, uživateli vytvořených tzv. kanálech (channels).
conda install -c rdkit rdkit
, tedy „nainstaluj balíček rdkit z kanálu rdkit“ ^_~ (Tedy pravda pouze do té doby, než potřebujete přidat nějakou další závislost a zjistíte, že autoři buildují RDKit proti vlastní verzi Boostů…)
Jak používat Condu se dočtete v:
PS: Než se v tom všem utopíte, nejspíš se vám bude v Condě hodit doplňování na příkazové řádce.
Nutno samozřejmě poznamenat, že situace ve správě pythoních balíčků a projektů dnes už zdaleka není tak bezradná jako ještě před pár lety. Zahrnutí balíčkovacího systému pip
spolu s podporou pro binární komponenty wheel
a virtuální prostředí venv
nás posunulo velký kus cesty ke kýženému cíli. Jen v přípravě balíčků se na lepší časy bohužel teprve snad blýská…
Kde je ovšem Conda nezastupitelná, to je právě správa i všech ostatních jazykových balíčků a jejich externích závislostí. Což je ostatně něco, co bychom po vlastním Python'u ani chtít neměli, protože to je zcela mimo jeho účel.