Virtuální prostředí v Jupyteru

Jak vyřešit konflikty verzí pythonu a balíčků pro různé python projekty? Musím vše nastavovat a dělat přes příkazový řádek a cítit se jako pravý geek, nebo si lze zjednodušit život?

V příspěvku tvorby obchodní strategie pomocí zipline, jsem používal knihovnu Zipline, která vyžadovala pro svůj běh knihovnu Pandas ve verzi 0.18.1, kterou jsem měl ale už nainstalovanou v novější verzi 0.20.3. Tyhle dvě verze pak kolidovali při psaní kódu v Jupyter notebooku, když jsem chtěl knihovnu Pandas importovat do jiného projektu.

Python virtual environment

Je virtuální prostředí, díky kterému můžu mít více instalací pythonu na svém počítači. V každé této instalaci můžu mít jakékoli balíčky a moduly nezávisle na ostatních.

Existuje hodně nástrojů pro práci s virtuál environments, např. Virtualenv. Platforma Anaconda pythonu má dokonce svoji vlastní implementaci virtual environments.

Všechny tyto nástroje se ovládají pomocí příkazové řádky. Měl jsem ale problém vytvořené environmenty nějak jednoduše propojit s Jupyter notebookem. Nakonec jsem našel rozšíření pro Jupyter, které se o tohle postará samo. Jde o rozšíření nb_conda, které vytvoří po spuštění jupyter notebook záložku Conda pro správu virtuálních prostředí. Instaluje se jednoduše pomocí příkazu:

conda install nb_conda

Následně po spuštění Jupyter notebooku příkazem jupyter notebook, se otevře prostředí Jupyteru a jako volba bude nová záložka Conda, kde můžu spravovat různá environments:

Image1

Zde si po vytvoření můžu zvolit, které balíčky chci nainstalovat:

Image2

nebo lze instalovat klasicky přes příkazovou řádku, jen musím nejprve aktivovat virtuální prostředí:

activate zipline_env

a pak klasicky přes pip můžu nainstalovat potřebné balíčky:

pip install zipline

Image3

Nakonec v Jupyter notebooku zvolím požadovaný Kernel a kód se automaticky bude spouštět v daném virtuálním prostředí.

Závěr

Python virtual environment je skvělý nástroj pro udržování potřebných verzí knihoven a následnou interpretaci (spouštění) programů v tomhle prostředí. Rozšíření nb_conda umožňuje graficky spravovat prostředí a nastavovat toto prostředí pro jednotlivé notebooky. Ještě musím zmínit, že nb_conda pracuje s virtuálním prostředím platformy Anaconda python.

Pomocí python virtual environment jsem vyřešil problém, kdy po instalaci balíčku zipline, mně kolidovali verze balíčku pandas v jiných programech.

Zdroje