Nastavení prostředí

V této sekci si připravíš adresář, do kterého budeš ukládat soubory k začátečnickým kurzům Pythonu, a aktivuješ si virtuální prostředí.

Příprava adresáře

Programátoři vytváří spoustu souborů, a víc než u mnoha jiných uživatelů počítače záleží na tom, kde jsou ty soubory uložené.

Níže uvedený postup zdaleka není jediná možnost, jak si organizovat soubory. Když ale použiješ tenhle ozkoušený způsob, může to hodně zjednodušit život těm, kteří ti budou pomáhat s případnými problémy.

Nejdřív vytvoř adresář (složku), ve kterém budeš mít soubory ke kurzu Pythonu. Může to být třeba pyladies ve tvém domovském adresáři. (Můžeš ho pojmenovat i jinak, ale pyladies používají příklady níže.)

Zvolený adresář po vytvoření nesmíš přesouvat jinam. Proto ho nedoporučuji vytvářet na Ploše.

Kdybys někdy adresář přece jen přesunul/a jinam, přestane fungovat virtuální prostředí, které za chvíli vytvoříme. Musel/a bys ho smazat a vytvořit nové.

Po vytvoření adresáře si poznamenej, kde přesně je. Budeš ho potřebovat na celý zbytek kurzu i na případné navazující kurzy.

Adresář pro každou lekci

Nový adresář je zatím prázdný. To se ale brzo změní a čím víc věcí v něm bude, tím bude důležitější mít obsah zorganizovaný.

Pro začátek si budeme tvořit nový podadresář pro každou lekci tohoto kurzu. Aby byly tyhle adresáře hezky seřazené, budeme je číslovat: tahle první lekce bude mít číslo 01, příště si vytvoříš adresář 02 a tak dále.

Všechny budou v tvém novém adresáři, který jsi vytvořil/a před chvilkou.

Adresář 01 si vytvoř už teď. (Možná do něj dnes nic nedáš, ale hodí se ho mít jako ukázku pro příště.)

Přepnutí

Pak otevři příkazovou řádku a příkazem cd přepni do adresáře, ve kterém jsi právě vytvořila 01 (t.j. ne přímo do 01). Například:

$ cd pyladies

Pak zkontroluj, že jsi na správném místě:

  • Pomocí příkazu pwd (na Windows cd) zkontroluj, že opravdu jsi v nově vytvořeném adresáři.
  • Pomocí příkazu ls (na Windows dir) zkontroluj, že v něm je podadresář 01.

Například:

Unix (Linux, macOS)

$ pwd
/home/helena/pyladies

$ ls
01

Windows

> cd
C:\Users\Helena\pyladies

> dir
 Directory of C:\Users\Helena\pyladies
05/08/2014 07:28 PM <DIR>  01

Výsledek pro kontrolu ukaž koučovi.

Virtuální prostředí

Teď nainstalujeme virtuální prostředí pro Python.

Virtuální prostředí je něco, co nám zajistí, že se všechny počítače budou chovat zhruba stejně. Až ho zprovozníme, nebudeme potřebovat instrukce zvlášť pro Linux, zvlášť pro Windows a zvlášť pro macOS.

V budoucnu využijeme druhou výhodu: každé virtuální prostředí je oddělené od ostatních, takže když doinstalujeme nějakou knihovnu (rozšíření pro Python), projeví se to jen v jednom virtuálním prostředí. Pokud by se při práci na projektu něco pokazilo, neohrozí to další projekty ve tvém počítači.

Jak na to? Na každém systému jinak!

  • normální Linux (pokud jsi přeskočil/a instalaci Virtualenv):

     $ python3 -m venv venv
    
  • starší Linux (pokud jsi musel/a instalovat Virtualenv):

     $ virtualenv -p python3 venv
    
  • macOS:

     $ python3 -m venv venv
    
  • Windows:

     > py -3 -m venv venv
    

Tím se ti vytvořil adresář venv, který virtuální prostředí obsahuje. Můžeš se podívat dovnitř, ale neukládej tam své soubory a nikdy tam nic neměň!

Zkontroluj si, že 01 a venv jsou pěkně vedle sebe:

Unix

$ ls
01
venv

Windows

> dir
 Directory of C:\Users\Helena\pyladies
05/08/2014 07:28 PM <DIR>  01
05/08/2014 07:38 PM <DIR>  venv

V grafickém prohlížeči souborů to vypadá např. takto:

(adresáře '01' a 'venv' vedle sebe)

Výsledek pro kontrolu ukaž koučovi.

Aktivace virtuálního prostředí

Nakonec virtuální prostředí aktivuj:

Unix

$ source venv/bin/activate

Windows

> venv\Scripts\activate

Po spuštění tohoto příkazu by se mělo na začátku příkazové řádky (před $ nebo >) objevit slovo (venv). Tak poznáš, že je virtuální prostředí aktivní.

Aktivační příkaz si zapiš. Bude potřeba ho zadat vždycky, když pustíš příkazovou řádku, ve které budeš zkoušet své programy.

Máš-li vytištěné domácí projekty, příkaz si poznač tam, ať ho do příště nezapomeneš :)

{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2019/pyladies-praha-podzim-ntk:install:3",
      "title": "Nastavení prostředí",
      "html": "\n          \n    \n\n    <h1>Nastaven&#xED; prost&#x159;ed&#xED;</h1>\n<p>V t&#xE9;to sekci si p&#x159;iprav&#xED;&#x161; adres&#xE1;&#x159;, do kter&#xE9;ho bude&#x161; ukl&#xE1;dat soubory\nk&#xA0;za&#x10D;&#xE1;te&#x10D;nick&#xFD;m kurz&#x16F;m Pythonu, a aktivuje&#x161; si virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;.</p>\n<h2>P&#x159;&#xED;prava adres&#xE1;&#x159;e</h2>\n<p>Program&#xE1;to&#x159;i vytv&#xE1;&#x159;&#xED; spoustu soubor&#x16F;, a v&#xED;c ne&#x17E; u mnoha jin&#xFD;ch u&#x17E;ivatel&#x16F;\npo&#x10D;&#xED;ta&#x10D;e z&#xE1;le&#x17E;&#xED; na tom, kde jsou ty soubory ulo&#x17E;en&#xE9;.</p>\n<p>N&#xED;&#x17E;e uveden&#xFD; postup zdaleka nen&#xED; jedin&#xE1; mo&#x17E;nost, jak si organizovat soubory.\nKdy&#x17E; ale pou&#x17E;ije&#x161; tenhle ozkou&#x161;en&#xFD; zp&#x16F;sob,\nm&#x16F;&#x17E;e to hodn&#x11B; zjednodu&#x161;it &#x17E;ivot t&#x11B;m, kte&#x159;&#xED; ti budou pom&#xE1;hat\ns&#xA0;p&#x159;&#xED;padn&#xFD;mi probl&#xE9;my.</p>\n<p>Nejd&#x159;&#xED;v vytvo&#x159; adres&#xE1;&#x159; (slo&#x17E;ku), ve kter&#xE9;m bude&#x161; m&#xED;t soubory ke kurzu Pythonu.\nM&#x16F;&#x17E;e to b&#xFD;t t&#x159;eba <code>pyladies</code> ve tv&#xE9;m domovsk&#xE9;m adres&#xE1;&#x159;i.\n(M&#x16F;&#x17E;e&#x161; ho pojmenovat i jinak, ale <code>pyladies</code> pou&#x17E;&#xED;vaj&#xED; p&#x159;&#xED;klady n&#xED;&#x17E;e.)</p>\n<p>Zvolen&#xFD; adres&#xE1;&#x159; po vytvo&#x159;en&#xED; nesm&#xED;&#x161; p&#x159;esouvat jinam.\nProto ho nedoporu&#x10D;uji vytv&#xE1;&#x159;et na Plo&#x161;e.</p>\n<div class=\"admonition note\"><p>Kdybys n&#x11B;kdy adres&#xE1;&#x159; p&#x159;ece jen p&#x159;esunul/a jinam,\np&#x159;estane fungovat <em>virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;</em>, kter&#xE9; za chv&#xED;li vytvo&#x159;&#xED;me.\nMusel/a bys ho smazat a vytvo&#x159;it nov&#xE9;.</p>\n</div><p>Po vytvo&#x159;en&#xED; adres&#xE1;&#x159;e si poznamenej, kde p&#x159;esn&#x11B; je.\nBude&#x161; ho pot&#x159;ebovat na cel&#xFD; zbytek kurzu i na p&#x159;&#xED;padn&#xE9; navazuj&#xED;c&#xED; kurzy.</p>\n<h3>Adres&#xE1;&#x159; pro ka&#x17E;dou lekci</h3>\n<p>Nov&#xFD; adres&#xE1;&#x159; je zat&#xED;m pr&#xE1;zdn&#xFD;.\nTo se ale brzo zm&#x11B;n&#xED; a &#x10D;&#xED;m v&#xED;c v&#x11B;c&#xED; v&#xA0;n&#x11B;m bude, t&#xED;m bude d&#x16F;le&#x17E;it&#x11B;j&#x161;&#xED;\nm&#xED;t obsah zorganizovan&#xFD;.</p>\n<p>Pro za&#x10D;&#xE1;tek si budeme tvo&#x159;it nov&#xFD; podadres&#xE1;&#x159; pro ka&#x17E;dou lekci tohoto kurzu.\nAby byly tyhle adres&#xE1;&#x159;e hezky se&#x159;azen&#xE9;, budeme je &#x10D;&#xED;slovat:\ntahle prvn&#xED; lekce bude m&#xED;t &#x10D;&#xED;slo <code>01</code>,\np&#x159;&#xED;&#x161;t&#x11B; si vytvo&#x159;&#xED;&#x161; adres&#xE1;&#x159; <code>02</code> a tak d&#xE1;le.</p>\n<p>V&#x161;echny budou v&#xA0;tv&#xE9;m nov&#xE9;m adres&#xE1;&#x159;i, kter&#xFD; jsi vytvo&#x159;il/a p&#x159;ed chvilkou.</p>\n<p>Adres&#xE1;&#x159; <code>01</code> si vytvo&#x159; u&#x17E; te&#x10F;.\n(Mo&#x17E;n&#xE1; do n&#x11B;j dnes nic ned&#xE1;&#x161;, ale hod&#xED; se ho m&#xED;t jako uk&#xE1;zku pro p&#x159;&#xED;&#x161;t&#x11B;.)</p>\n<h3>P&#x159;epnut&#xED;</h3>\n<p>Pak otev&#x159;i p&#x159;&#xED;kazovou &#x159;&#xE1;dku a p&#x159;&#xED;kazem <code>cd</code> p&#x159;epni do adres&#xE1;&#x159;e,\nve kter&#xE9;m jsi pr&#xE1;v&#x11B; vytvo&#x159;ila <code>01</code> (t.j. ne p&#x159;&#xED;mo do <code>01</code>).\nNap&#x159;&#xED;klad:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span><span class=\"nb\">cd</span> pyladies\n</pre></div><p>Pak zkontroluj, &#x17E;e jsi na spr&#xE1;vn&#xE9;m m&#xED;st&#x11B;:</p>\n<ul>\n<li>Pomoc&#xED; p&#x159;&#xED;kazu <code>pwd</code> (na Windows <code>cd</code>) zkontroluj,\n&#x17E;e opravdu jsi v&#xA0;nov&#x11B; vytvo&#x159;en&#xE9;m adres&#xE1;&#x159;i.</li>\n<li>Pomoc&#xED; p&#x159;&#xED;kazu <code>ls</code> (na Windows <code>dir</code>) zkontroluj,\n&#x17E;e v&#xA0;n&#x11B;m je podadres&#xE1;&#x159; <code>01</code>.</li>\n</ul>\n<p>Nap&#x159;&#xED;klad:</p>\n<div class=\"row side-by-side-commands\"><div class=\"col\">\n                <h4>Unix (Linux, macOS)</h4><div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span><span class=\"nb\">pwd</span>\n<span class=\"go\">/home/helena/pyladies</span>\n\n<span class=\"gp\">$ </span>ls\n<span class=\"go\">01</span>\n</pre></div></div><div class=\"col\">\n                <h4>Windows</h4><div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt; </span>cd\n<span class=\"go\">C:\\Users\\Helena\\pyladies</span>\n\n<span class=\"gp\">&gt; </span>dir\n<span class=\"go\"> Directory of C:\\Users\\Helena\\pyladies</span>\n<span class=\"go\">05/08/2014 07:28 PM &lt;DIR&gt;  01</span>\n</pre></div></div></div><p>V&#xFD;sledek pro kontrolu uka&#x17E; kou&#x10D;ovi.</p>\n<h2>Virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;</h2>\n<p>Te&#x10F; nainstalujeme <em>virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;</em> pro Python.</p>\n<p>Virtu&#xE1;ln&#xED; prost&#x159;ed&#xED; je n&#x11B;co, co n&#xE1;m zajist&#xED;, &#x17E;e se v&#x161;echny po&#x10D;&#xED;ta&#x10D;e budou\nchovat zhruba stejn&#x11B;.\nA&#x17E; ho zprovozn&#xED;me, nebudeme pot&#x159;ebovat instrukce zvl&#xE1;&#x161;&#x165; pro Linux,\nzvl&#xE1;&#x161;&#x165; pro Windows a zvl&#xE1;&#x161;&#x165; pro macOS.</p>\n<div class=\"admonition note\"><p>V&#xA0;budoucnu vyu&#x17E;ijeme druhou v&#xFD;hodu: ka&#x17E;d&#xE9; virtu&#xE1;ln&#xED; prost&#x159;ed&#xED; je odd&#x11B;len&#xE9; od\nostatn&#xED;ch, tak&#x17E;e kdy&#x17E; doinstalujeme n&#x11B;jakou knihovnu (roz&#x161;&#xED;&#x159;en&#xED; pro Python),\nprojev&#xED; se to jen v&#xA0;jednom virtu&#xE1;ln&#xED;m prost&#x159;ed&#xED;.\nPokud by se p&#x159;i pr&#xE1;ci na projektu n&#x11B;co pokazilo, neohroz&#xED; to dal&#x161;&#xED; projekty\nve tv&#xE9;m po&#x10D;&#xED;ta&#x10D;i.</p>\n</div><p>Jak na to?\nNa ka&#x17E;d&#xE9;m syst&#xE9;mu jinak!</p>\n<ul>\n<li><p>norm&#xE1;ln&#xED; <strong>Linux</strong> (pokud jsi p&#x159;esko&#x10D;il/a instalaci Virtualenv):</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\"> $ </span>python3 -m venv venv\n</pre></div></li>\n<li><p>star&#x161;&#xED; <strong>Linux</strong> (pokud jsi musel/a instalovat Virtualenv):</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\"> $ </span>virtualenv -p python3 venv\n</pre></div></li>\n<li><p><strong>macOS</strong>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\"> $ </span>python3 -m venv venv\n</pre></div></li>\n<li><p><strong>Windows</strong>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\"> &gt; </span>py -3 -m venv venv\n</pre></div></li>\n</ul>\n<p>T&#xED;m se ti vytvo&#x159;il adres&#xE1;&#x159; <code>venv</code>, kter&#xFD; virtu&#xE1;ln&#xED; prost&#x159;ed&#xED; obsahuje.\nM&#x16F;&#x17E;e&#x161; se pod&#xED;vat dovnit&#x159;, ale neukl&#xE1;dej tam sv&#xE9; soubory a nikdy tam nic nem&#x11B;&#x148;!</p>\n<p>Zkontroluj si, &#x17E;e <code>01</code> a <code>venv</code> jsou p&#x11B;kn&#x11B; vedle sebe:</p>\n<div class=\"row side-by-side-commands\"><div class=\"col\">\n                <h4>Unix</h4><div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span>ls\n<span class=\"go\">01</span>\n<span class=\"go\">venv</span>\n</pre></div></div><div class=\"col\">\n                <h4>Windows</h4><div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt; </span>dir\n<span class=\"go\"> Directory of C:\\Users\\Helena\\pyladies</span>\n<span class=\"go\">05/08/2014 07:28 PM &lt;DIR&gt;  01</span>\n<span class=\"go\">05/08/2014 07:38 PM &lt;DIR&gt;  venv</span>\n</pre></div></div></div><p>V&#xA0;grafick&#xE9;m prohl&#xED;&#x17E;e&#x10D;i soubor&#x16F; to vypad&#xE1; nap&#x159;. takto:</p>\n<p><span class=\"figure\"><a href=\"/2019/pyladies-praha-podzim-ntk/beginners/venv-setup/static/dirs.png\"><img src=\"/2019/pyladies-praha-podzim-ntk/beginners/venv-setup/static/dirs.png\" alt=\"(adres&#xE1;&#x159;e &apos;01&apos; a &apos;venv&apos; vedle sebe)\"></a></span></p>\n<p>V&#xFD;sledek pro kontrolu uka&#x17E; kou&#x10D;ovi.</p>\n<h3>Aktivace virtu&#xE1;ln&#xED;ho prost&#x159;ed&#xED;</h3>\n<p>Nakonec virtu&#xE1;ln&#xED; prost&#x159;ed&#xED; aktivuj:</p>\n<div class=\"row side-by-side-commands\"><div class=\"col\">\n                <h4>Unix</h4><div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span><span class=\"nb\">source</span> venv/bin/activate\n</pre></div></div><div class=\"col\">\n                <h4>Windows</h4><div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt; </span>venv\\Scripts\\activate\n</pre></div></div></div><p>Po spu&#x161;t&#x11B;n&#xED; tohoto p&#x159;&#xED;kazu by se m&#x11B;lo na za&#x10D;&#xE1;tku p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dky\n(p&#x159;ed&#xA0;<code>$</code> nebo <code>&gt;</code>) objevit slovo <code>(venv)</code>.\nTak pozn&#xE1;&#x161;, &#x17E;e je virtu&#xE1;ln&#xED; prost&#x159;ed&#xED; <em>aktivn&#xED;</em>.</p>\n<p>Aktiva&#x10D;n&#xED; p&#x159;&#xED;kaz si zapi&#x161;.\nBude pot&#x159;eba ho zadat v&#x17E;dycky, kdy&#x17E; pust&#xED;&#x161; p&#x159;&#xED;kazovou &#x159;&#xE1;dku,\nve kter&#xE9; bude&#x161; zkou&#x161;et sv&#xE9; programy.</p>\n<p>M&#xE1;&#x161;-li vyti&#x161;t&#x11B;n&#xE9; <a href=\"http://pyladies.cz/v1/s001-install/handout/handout.pdf\">dom&#xE1;c&#xED; projekty</a>,\np&#x159;&#xED;kaz si pozna&#x10D; tam, a&#x165; ho do p&#x159;&#xED;&#x161;t&#x11B; nezapomene&#x161; :)</p>\n\n\n        "
    }
  }
}