Používanie Python virtuálnych prostredí¶
Python virtuálne prostredia umožňujú používateľom inštalovať projektovo špecifické závislosti bez ovplyvnenia systémovej inštalácie Pythonu. To je obzvlášť užitočné na HPC systémoch, kde používatelia nemajú administrátorské oprávnenia a jednotlivé projekty môžu vyžadovať rôzne verzie softvéru.
Štandardný modul Pythonu venv poskytuje ľahké virtuálne prostredia,
ktoré izolujú nainštalované balíky a ich závislosti.
Výhody virtuálnych prostredí¶
- Izolované závislosti: Udržiavajú knižnice projektu oddelené od systémových knižníc.
- Reprodukovateľnosť: Zjednodušujú zdieľanie a nasadzovanie kódu s konzistentnými závislosťami.
- Správa oprávnení: Umožňujú inštalovať balíky bez potreby administrátorských oprávnení.
V porovnaní s Conda prostrediami sú Python virtuálne prostredia ľahšie a jednoduchšie. Conda však poskytuje pokročilejšiu správu závislostí a podporu binárnych balíkov.
Architektúrne špecifické virtuálne prostredia
Perun ponúka x86_64 CPU uzly aj ARM64 (AArch64) GPU uzly založené na procesoroch NVIDIA Grace Hopper.
Python virtuálne prostredia sú architektúrne špecifické. Virtuálne prostredie vytvorené na prihlasovacích uzloch (x86_64) sa zvyčajne nedá použiť na GPU uzloch (AArch64) a naopak.
Ak sa prostredie bude používať na GPU uzloch, vytvorte ho priamo na GPU uzle:
srun --partition=gpu --gres=gpu:1 --pty bash
module load Python/<version>
python3 -m venv myenv
source myenv/bin/activate
Súbory s požiadavkami na balíky, ako je requirements.txt, je možné
zdieľať medzi architektúrami. Samotné virtuálne prostredie sa však
musí vytvoriť samostatne pre každú architektúru.
Používanie venv¶
Modul venv je súčasťou Pythonu a dá sa použiť na vytváranie
virtuálnych prostredí.
Vytváranie virtuálneho prostredia¶
-
Najprv načítajte príslušný Python interpreter:
module load Python/<version> -
Vytvorte virtuálne prostredie v požadovanom adresári:
python3 -m venv /path/to/the/directory -
Aktivujte prostredie:
source /path/to/the/directory/bin/activate -
Deaktivujte prostredie:
deactivate
Inštalácia balíkov¶
Používajte pip vo vnútri aktivovaného virtuálneho prostredia:
pip install <package-name>
Balík je dostupný dovtedy, kým je virtuálne prostredie aktívne. Po odstránení virtuálneho prostredia sa odstránia aj balíky nainštalované v tomto prostredí.
Použitie Python virtuálnych prostredí v Slurm batch skriptoch¶
Na použitie Python virtuálneho prostredia v Slurm batch skripte je potrebné načítať príslušnú verziu Pythonu a následne aktivovať samotné prostredie:
module load Python/<version>
source /path/to/the/directory/bin/activate
Riešenie problémov¶
Najčastejší problém sa objaví, keď verzia Pythonu použitá na vytvorenie prostredia sa líši od aktuálne načítaného Python modulu.
Pri vytváraní virtuálneho prostredia sa nastaví interpreter Pythonu, ktorý sa použil na jeho vytvorenie. Ak sa neskôr načíta iný Python modul, prostredie sa môže správať nepredvídateľne.
Aby ste tomuto problému predišli, uistite sa, že pred aktiváciou prostredia je vždy načítaný rovnaký Python modul.
Niektorí používatelia pridávajú príkaz na načítanie modulu priamo do aktivačného skriptu:
module load Python/<version>
Používanie virtualenvwrapper¶
virtualenvwrapper je nástroj, ktorý poskytuje ďalšie nástroje na
zjednodušenie správy viacerých virtuálnych prostredí.
Môžete ho použiť na organizáciu svojich Python virtuálnych prostredí.
Nastavenie virtualenvwrapper¶
Je potrebné nastaviť premennú prostredia WORKON_HOME a načítať
setup skript pomocou príkazu source, ako je uvedené nižšie:
export WORKON_HOME=$HOME/envs
source $HOME/.local/bin/virtualenvwrapper.sh
Premenná WORKON_HOME určuje absolútnu cestu k adresáru, v ktorom
sa budú ukladať virtuálne prostredia. Druhý príkaz source načíta
funkcie shellu potrebné na fungovanie virtualenvwrapper.
Odporúča sa umiestniť tieto dva príkazy do súboru .bashrc
uloženého v domovskom adresári.
Základné príkazy¶
Medzi základné príkazy nástroja virtualenvwrapper patria:
# Create new virtual environment with selected flavor of python
mkvirtualenv -p $(which python3) <name-of-the-environment>
# Activate environment
workon <name-of-the-environment>
# Deactivate environment
deactivate
# Remove environment
rmvirtualenv <name-of-the-environment>
Odporúčané postupy¶
-
Vytvárajte samostatné prostredie pre každý projekt.
-
Po aktivácii prostredia môžete jednoducho prejsť do jeho adresára pomocou:
cd $VIRTUAL_ENV
Odporúča sa vytvoriť alias pre tento príkaz.
-
V adresári
VIRTUAL_ENV/binsú uložené štyri skripty (hooks):preactivate– vykoná sa pred aktiváciou prostrediapostactivate– vykoná sa po aktivácii prostrediapredeactivate– vykoná sa pred deaktiváciou prostrediapostdeactivate– vykoná sa po deaktivácii prostredia
Tieto skripty je možné využiť podľa požiadaviek konkrétneho projektu.
Používanie hook skriptov
echo "module load Python/<version>" >> $VIRTUAL_ENV/bin/preactivate echo "echo 'Environment activated!'" >> $VIRTUAL_ENV/bin/postactivate -
Ukladajte závislosti do súboru
requirements.txtna zabezpečenie reprodukovateľnosti:
pip freeze > requirements.txt
- Znova nainštalujte závislosti pomocou súboru
requirements.txt:
pip install -r requirements.txt
Riešenie problémov
- Nefunguje aktivácia prostredia: Uistite sa, že používate
príkaz
sourcea že cesty sú správne. - Chyby pri inštalácii balíkov: Skontrolujte, či je aktívny správny Python interpreter.
Požiadavky na moduly a architektúru
Ak na vytvorenie virtuálneho prostredia používate Python modul, pred aktiváciou prostredia sa musí načítať rovnaký Python modul.
Na Perun sú virtuálne prostredia tiež architektúrne špecifické. Prostredia vytvorené na x86_64 prihlasovacích alebo CPU uzloch sa zvyčajne nedajú použiť na ARM64 Grace Hopper GPU uzloch. Vytvárajte samostatné virtuálne prostredia pre každú architektúru podľa potreby.