V tomto kurzu budeme používat virtuální prostředí. Jedná se o oddělené prostředí pro Python, kam se dají instalovat jednotlivé knihovny, které jsou potom aktivní jen uvnitř. Použití prostředí má dvě hlavní výhody:

  • Je-li prostředí aktivované, příkaz python spustí verzi Pythonu, se kterou bylo prostředí nainstalováno. Takže pak např. v materiálech nemusíme mít speciální instrukce pro Linux (python3) a Windows (py -3).

  • Instalace knihoven nezasahuje do systémového nastavení, ani do jiných virtuálních prostředí. Můžeš tak oddělit jednotlivé projekty; v každém prostředí můžou být nainstalované jiné verze knihoven. A když se něco pokazí, adresář s virtuální prostředím můžeš prostě smazat a vytvořit znovu.

Následují zrychlené instrukce; předpokládám, že Python (3.6 a vyšší) už máš nainstalovaný a že znáš základy práce s příkazovou řádkou.

Podrobný postup instalace Pythonu a vytvoření prostředí je je popsán v příslušné lekci pro začátečníky. Modul venv je součást standardní knihovny.

Unix (Linux, macOS)

Zkontroluj, že máš modul ensurepip:

$ python3.7 -m ensurepip --version
pip 18.0 (nebo i jiná verze)

Jestli ne, postupuj podle lekce pro začátečníky – jsou tam podrobnější instrukce. Jinak použij:

$ mkdir project
$ cd project
$ python3.7 -m venv __venv__  # vytvoření virtualenvu -- použij Python 3 dle systému
$ . __venv__/bin/activate  # aktivace
(__venv__)$ python -m pip install requests  # příkaz na instalaci balíčků puštěný ve virtualenvu
(__venv__)$ ...  # práce "uvnitř"
(__venv__)$ deactivate  # vypnutí virtualenvu

Windows

> mkdir project
> cd project
> py -3 -m venv __venv__
> __venv__\Scripts\activate
(__venv__)> python -m pip install requests  # příkaz na instalaci balíčků puštěný ve virtualenvu
(__venv__)> ...  # práce "uvnitř"
(__venv__)> deactivate  # vypnutí virtualenvu

Poznámky

Příkaz . __venv__/bin/activate budeš muset zadat vždy, než začneš na projektu pracovat.

Ono __venv__ je jen jméno adresáře. Můžeš si ho pojmenovat jak chceš; dokonce nemusí být v rámci adresáře s projektem. Někteří lidé mají všechny virtuální prostředí na jednom místě; dokonce existuje nástroj virtualenvwrapper na správu takového řešení, případně pipenv, který Python Packaging Authority doporučuje pro vývoj aplikací (my ale budeme vyvíjet i knihovny).

Autoři tohoto textu tedy doporučují __venv__ v adresáři s projektem. Při použití v kombinaci s Gitem nezapomeň tento adresář přidat do souboru .gitignore.

Příkaz python -m pip install nainstaluje danou knihovnu – může to být i jiná než requests jako výše.

{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2019/brno-jaro-knihovny:install:0",
      "title": "Vytvoření virtuáního prostředí",
      "html": "\n          \n    \n\n    <p>V tomto kurzu budeme pou&#x17E;&#xED;vat <em>virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;</em>.\nJedn&#xE1; se o odd&#x11B;len&#xE9; prost&#x159;ed&#xED; pro Python, kam se daj&#xED; instalovat jednotliv&#xE9;\nknihovny, kter&#xE9; jsou potom aktivn&#xED; jen uvnit&#x159;.\nPou&#x17E;it&#xED; prost&#x159;ed&#xED; m&#xE1; dv&#x11B; hlavn&#xED; v&#xFD;hody:</p>\n<ul>\n<li><p>Je-li prost&#x159;ed&#xED; aktivovan&#xE9;,\np&#x159;&#xED;kaz <code>python</code> spust&#xED; verzi Pythonu, se kterou bylo prost&#x159;ed&#xED; nainstalov&#xE1;no.\nTak&#x17E;e pak nap&#x159;. v&#xA0;materi&#xE1;lech nemus&#xED;me m&#xED;t speci&#xE1;ln&#xED; instrukce pro\nLinux (<code>python3</code>) a Windows (<code>py -3</code>).</p>\n</li>\n<li><p>Instalace knihoven nezasahuje do syst&#xE9;mov&#xE9;ho nastaven&#xED;, ani do jin&#xFD;ch\nvirtu&#xE1;ln&#xED;ch prost&#x159;ed&#xED;.\nM&#x16F;&#x17E;e&#x161; tak odd&#x11B;lit jednotliv&#xE9; projekty; v ka&#x17E;d&#xE9;m prost&#x159;ed&#xED; m&#x16F;&#x17E;ou b&#xFD;t\nnainstalovan&#xE9; jin&#xE9; verze knihoven.\nA kdy&#x17E; se n&#x11B;co pokaz&#xED;, adres&#xE1;&#x159; s&#xA0;virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;m m&#x16F;&#x17E;e&#x161; prost&#x11B; smazat\na vytvo&#x159;it znovu.</p>\n</li>\n</ul>\n<p>N&#xE1;sleduj&#xED; zrychlen&#xE9; instrukce; p&#x159;edpokl&#xE1;d&#xE1;m, &#x17E;e Python (3.6 a vy&#x161;&#x161;&#xED;)\nu&#x17E; m&#xE1;&#x161; nainstalovan&#xFD; a &#x17E;e zn&#xE1;&#x161; z&#xE1;klady pr&#xE1;ce\ns&#xA0;<a href=\"/2019/brno-jaro-knihovny/beginners/cmdline/\">p&#x159;&#xED;kazovou &#x159;&#xE1;dkou</a>.</p>\n<p>Podrobn&#xFD; postup instalace Pythonu a vytvo&#x159;en&#xED; prost&#x159;ed&#xED; je je pops&#xE1;n\nv&#xA0;p&#x159;&#xED;slu&#x161;n&#xE9; <a href=\"/2019/brno-jaro-knihovny/beginners/install/\">lekci pro za&#x10D;&#xE1;te&#x10D;n&#xED;ky</a>.\nModul <code>venv</code> je sou&#x10D;&#xE1;st <a href=\"https://docs.python.org/3/library/venv.html\">standardn&#xED; knihovny</a>.</p>\n<h2>Unix (Linux, macOS)</h2>\n<p>Zkontroluj, &#x17E;e m&#xE1;&#x161; modul <code>ensurepip</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span>python3.7 -m ensurepip --version\n<span class=\"go\">pip 18.0 (nebo i jin&#xE1; verze)</span>\n</pre></div><p>Jestli ne, postupuj podle <a href=\"/2019/brno-jaro-knihovny/beginners/install/\">lekce pro za&#x10D;&#xE1;te&#x10D;n&#xED;ky</a> &#x2013;\njsou tam podrobn&#x11B;j&#x161;&#xED; instrukce.\nJinak pou&#x17E;ij:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span>mkdir project\n<span class=\"gp\">$ </span><span class=\"nb\">cd</span> project\n<span class=\"gp\">$ </span>python3.7 -m venv __venv__  <span class=\"c1\"># vytvo&#x159;en&#xED; virtualenvu -- pou&#x17E;ij Python 3 dle syst&#xE9;mu</span>\n<span class=\"gp\">$ </span>. __venv__/bin/activate  <span class=\"c1\"># aktivace</span>\n<span class=\"gp\">(__venv__)$ </span>python -m pip install requests  <span class=\"c1\"># p&#x159;&#xED;kaz na instalaci bal&#xED;&#x10D;k&#x16F; pu&#x161;t&#x11B;n&#xFD; ve virtualenvu</span>\n<span class=\"gp\">(__venv__)$ </span>...  <span class=\"c1\"># pr&#xE1;ce &quot;uvnit&#x159;&quot;</span>\n<span class=\"gp\">(__venv__)$ </span>deactivate  <span class=\"c1\"># vypnut&#xED; virtualenvu</span>\n</pre></div><h2>Windows</h2>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt; </span>mkdir project<span class=\"gp\"></span>\n<span class=\"gp\">&gt; </span>cd project<span class=\"gp\"></span>\n<span class=\"gp\">&gt; </span>py -3 -m venv __venv__<span class=\"gp\"></span>\n<span class=\"gp\">&gt; </span>__venv__\\Scripts\\activate\n<span class=\"gp\">(__venv__)&gt; </span>python -m pip install requests  <span class=\"c\"># p&#x159;&#xED;kaz na instalaci bal&#xED;&#x10D;k&#x16F; pu&#x161;t&#x11B;n&#xFD; ve virtualenvu</span>\n<span class=\"gp\">(__venv__)&gt; </span>...  <span class=\"c\"># pr&#xE1;ce &quot;uvnit&#x159;&quot;</span>\n<span class=\"gp\">(__venv__)&gt; </span>deactivate  <span class=\"c\"># vypnut&#xED; virtualenvu</span>\n</pre></div><h2>Pozn&#xE1;mky</h2>\n<p>P&#x159;&#xED;kaz <code>. __venv__/bin/activate</code> bude&#x161; muset zadat v&#x17E;dy, ne&#x17E; za&#x10D;ne&#x161; na projektu\npracovat.</p>\n<p>Ono <code>__venv__</code> je jen jm&#xE9;no adres&#xE1;&#x159;e. M&#x16F;&#x17E;e&#x161; si ho pojmenovat jak chce&#x161;; dokonce\nnemus&#xED; b&#xFD;t v&#xA0;r&#xE1;mci adres&#xE1;&#x159;e s&#xA0;projektem.\nN&#x11B;kte&#x159;&#xED; lid&#xE9; maj&#xED; v&#x161;echny virtu&#xE1;ln&#xED; prost&#x159;ed&#xED; na jednom m&#xED;st&#x11B;; dokonce existuje\nn&#xE1;stroj <a href=\"https://virtualenvwrapper.readthedocs.io/en/latest/\">virtualenvwrapper</a> na spr&#xE1;vu takov&#xE9;ho &#x159;e&#x161;en&#xED;, p&#x159;&#xED;padn&#x11B; <a href=\"https://pipenv.readthedocs.io/en/latest/\">pipenv</a>,\nkter&#xFD; <em>Python Packaging Authority</em> <a href=\"https://packaging.python.org/tutorials/managing-dependencies/\">doporu&#x10D;uje</a> pro v&#xFD;voj aplikac&#xED; (my ale\nbudeme vyv&#xED;jet i knihovny).</p>\n<p>Auto&#x159;i tohoto textu tedy doporu&#x10D;uj&#xED; <code>__venv__</code> v adres&#xE1;&#x159;i s projektem.\nP&#x159;i pou&#x17E;it&#xED; v kombinaci s Gitem nezapome&#x148; tento adres&#xE1;&#x159; p&#x159;idat do souboru\n<code>.gitignore</code>.</p>\n<p>P&#x159;&#xED;kaz <code>python -m pip install</code> nainstaluje danou knihovnu &#x2013; m&#x16F;&#x17E;e to b&#xFD;t i jin&#xE1;\nne&#x17E; <code>requests</code> jako v&#xFD;&#x161;e.</p>\n\n\n        "
    }
  }
}