/ Tipy a Triky

Ako na VirtualEnv

Pre niektorých staré známe, pre niektorých novinka. V tomto článku popíšem ako a pre čo začať používať VirtualEnv.

Čo je vlastne VirtualEnv

Je to nástroj, ktorý vám umožní vytvoriť izolované python prostredie. Že je aktívny spoznáte podľa toho, že pred interpreterom je v zátvorke uvedený jeho názov (facebug)
Screenshot-from-2018-05-20-13-51-28

Na čo je to dobré?

Deployovali ste už niekedy aplikáciu v pythone, alebo v nejakom inom programovacom jazyku a stretli ste sa s tým, že aplikácia bola závislá na xy iných knižniciach? A pokiaľ sa jednalo o interpretovaný programovací jazyk ako napríklad Python, chýbajúci balík ste si mnoho krát všimli až keď aplikácia padla za behu.
Pythonisti určite poznajú súbor requirements.txt, ktorý obsahuje verzie a mená balíkov, ktoré sú pre aplikáciu potrebné. Nainštalovať potrebné knižnice je možné cez príkaz:

pip install -Ur requirements.txt

Avšak to sa neodporúča. Prečo? Pretože čoskoro budete mať systém plný zbytočných knižníc, mnoho krát aj dosť zastaralých. A taktiež vytvorenie tohto súboru cez príkaz

pip freeze > requirements.txt

bude problematické. Napríklad v mojom prípade vystup obsahuje viac ako 170 knižníc, pričom priemerný projekt, potrebuje max 5 - 10 rôznych knižníc. Sysadmin, alebo DevOps-ak, ktorý to bude deployovať by vás určite za zbytočný bordel nepochválil.

A tu prichádza na radu Virtualenv. Vytvorí vám prázdne prostredie, oddelené od skutočného systému. Takže máte k dispozícii čistý python interpreter, a potrebné balíky nainštalujete cez pip

pip install package_name

Ako nainštalovať a spustiť virtualenv

Inštalácia je jednoduchá. Využijete pythonovský package manager pip:

pip install virtualenv

Ale je možné, že ho už máte k dispozícii. Overiť to môžete spustením:

virtualenv --help

Ako vytvoriť nový Virtualenv

Vytvorenie je jednoduché:

virtualenv ADRESAR

a

virtualenv -p python3 ADRESAR

pre Python3

Ideálne je pridať virtualenv priamo do priečinku s projektom. Avšak v ŽIADNOM prípade ho nenahrávajte do gitu. Môžete použiť napríklad .gitignore súbor, vytvorený službou gitignore.io ale Virtualenv sa do git-u skrátka nenahráva.

Aktivovanie daného prostredia (environmentu) je možné cez jeden z dvoch nižšie uvedených príkazov:

source ADRESAR/bin/activate
. ADRESAR/bin/activate

Použitie

  • Vytvoríte a aktivujete si dané prostredie, cez príkazy uvedené vyšie.
  • Pracujete vo vašom obľubenom editore, balíky inštalujete cez pip.
  • Počas vývoja príkazom:
pip freeze > requirements.txt

vyexportujete mena a verzie všetkých balíkov, ktoré ste do teraz použili.

Prostredie opustíte príkazom:

deactivate

alebo zavretím daného okna s terminálom (príkaz exit alebo CTRL + D).

Taktiež je možné použiť aj príkaz:

ADRESAR/bin/python file.py

na priame spustenie daného súboru alebo

ADRESAR/bin/python

na spustenie interpreteru z daného prostredia.

BONUS: Virtualenv v PyCharm

PyCharm Professional* má zabudovanú podporu pre Virtualenv, takže žiadne pluginy nie su potrebné. Pri vytváraní nového projektu stačí iba rozkliknuť možnosť Project interpreter

Screenshot-from-2018-05-20-14-24-42

V prípade že už máte existujúci projekt, v Settings zvoľte položku Project interpreter a kliknutím na koliesko vyberte možnosť Add
Screenshot-from-2018-05-20-14-27-42
Screenshot-from-2018-05-20-14-29-51
Screenshot-from-2018-05-20-14-30-22

Osobne nezaklikávam žiadnu s možností. Len málokedy potrebujete zdielať prostredie medzi viacerými projektmi a dedením globálnych balíkov si akurát tak zaprasíte projekt už od začiatku.


* pravdepodobne má podporu aj Community Edition. Ako študent mám však prístup k platenej verzii zdarma, tak skúsenosti s Community Edition nemám.

Cheatsheet

Inštalácia Virtualenv

pip install virtualenv

Vytvorenie nového prostredia

# Python2
virtualenv ADRESAR
#Python3
virtualenv -p python3 ADRESAR

Aktivácia Virtualenv

source ADRESAR/bin/activate
. ADRESAR/bin/activate

Deaktivácia Virtualenv

deactivate

Vytvorenie requirements.txt

pip freeze > requirements.txt

Inštalácia balíkov z requirements.txt

pip install -uR requirements.txt

Použitie intrepreteru z prostredia (environmentu)

ADRESAR/bin/python
ADRESAR/bin/python subor.py