====== PyCharm ====== [[https://www.jetbrains.com/pycharm/|PyCharm]] je vývojové prostředí pro Python vyvíjené firmou [[https://www.jetbrains.com/|JetBrains]]. Existuje ve 3 verzích: * //EDU edition// * //Community edition// * //Professional edition// //EDU edition// je k dispozici zdarma a je určena pro výukoové účely. Obsahuje minimální postačující soubor funkcí, aby začínající uživatel nebyl zahlcen. //Community edition// je k dispozici zdarma, má méně funkcí než //professional//, ale pro účely tohoto předmětu je zcela dostačující. Pokud byste chtěli vyzkoušet i placenou verzi //professional//, můžete využít školní licenci, která dává možnost studentům a zaměstnancům ČVUT produkt využívat pro nekomerční účely. Licenci najdete na serveru [[http://download.cvut.cz]]. Po přihlášení ji najdete v nabídce pod položkami **Produkty dostupné studentům** > **JetBrains** > **PyCharm**. ===== Založení projektu v PyCharm ===== Používáte-li k vývoji v Pythonu prostředí PyCharm, doporučujeme vám vytvořit si pro řešení úlohy projekt. PyCharm tak bude schopen lépe analyzovat váš kód a udržovat stav vaší práce mezi jednotlivými sezeními. Při vytváření projektu dejte pozor, abyste vybrali správnou verzi interpreteru! Na cvičeních používáme Python 3 (ideálně 3.4, ale může být i 3.2). Tutoriály k vytváření projektů v PyCharm na stránkách JetBrains: * [[https://www.jetbrains.com/pycharm/webhelp/creating-projects-from-scratch-in-pycharm.html|Vytváření projektů od nuly]] * [[https://www.jetbrains.com/pycharm/webhelp/importing-project-from-existing-source-code.html|Vytvoření projektu z existujících zdrojových kódů]] ++++ Stručný postup: | - Udělejte jednu z následujících věcí: * Na uvítací obrazovce v sekci **Quick start** vyberte možnost **Create new project**. * V nabídce **File** zvolte položku **New project**. - V dialogu, který se objevil, vyplňte * název projektu (**Project name**), např. "spam", * adresář (**Location**), kde projekt chcete mít, např. "/skola/rph", * typ projektu (**Project type**) nastavte na **Empty project** a * uveďte cestu k vašemu interpretu Pythonu (**Interpreter**), pokud ji tam nemáte již vyplněnou. Dejte pozor na správnou verzi! - Klikněte na **OK**, v následujícím okně vyberte, zda chcete projekt otevřít ve stávajícím nebo v novém okně a opět klikněte na **OK**. Tím by se měl vytvořit adresář projektu (v našem případě např. ''/skola/rph/spam'' a uvnitř něj další (skrytý) adresář ''.idea'', kam si PyCharm ukládá různá nastavení (ale s tímto adresářem byste prakticky neměli přijít do styku). - Soubory do projektu můžete vložit v zásadě dvěma způsoby: * Vytvoříte nový soubor uvnitř projektu, např. * pomocí menu **File** > **New ...**, nebo * volbou položky **New** z kontextového menu po kliknutí pravým tlačítkem na název projektu v nástroji **Project**. * Existující soubory prostě nahrajete do adresáře projektu. ++++ /* - Stáhněte si {{:courses:a4b99rph:cviceni:spam:test1_readclassification.zip|testy ke kroku 1}} a {{:courses:a4b99rph:cviceni:spam:test2_corpus.zip|testy ke kroku 2}} a rozbalte je do adresáře projektu (přidejte je do projektu). Měli byste soubory s testy vidět v okně nástroje **Project**. */ ===== Spouštění skriptů v PyCharm ===== Existuje celá řada možností, jak skript/program spustit. Každá se hodí na něco jiného, má své výhody a nevýhody. ==== Spouštění v Python shellu ==== ++++ Spustí skript, jako byste jej řádek po řádku napsali do konzole Pythonu: | - Otevřete skript v editoru. - Označte celý text (**CTRL-A**). - Klikněte pravým tlačítkem na výběr a z kontextové nabídky vyberte **Execute Selection in Console** (**Alt-Shift-E**). Je samozřejmě možné postup provést jen pro část skriptu. ++++ ==== Konfigurace pro běh a ladění ==== ++++ Run/Debug Configurations: | Skripty/programy/aplikace se v PyCharmu obvykle spouštějí pomocí nástroje **Run**, který lze vyvolat na mnoha místech PyCharmu. Nejdřív si ale pojďme říct, co vlastně znamená "spustit skript/program/aplikaci". Zdrojové kódy vašeho projektu (ať už je to jediný soubor nebo tisíce souborů v mnoha adresářích) se dají "použít" v mnoha "módech". Typický jednoduchý skript v Pythonu bude obsahovat kód, dokumentaci ve formě komentářů a třeba doctesty (opět uvnitř komentářů). S takovým skriptem můžete chtít dělat různé věci: * spustit ho (třeba s různými argumenty), * spustit nástroj, který z dokumentace uvnitř komentářů vytvoří HTML nebo PDF dokumentaci, * spustit doctesty, které se nacházejí uvnitř komentářů, * ... Pro každý takový "mód použití" vašeho projektu je třeba v PyCharmu nadefinovat vlastní konfiguraci pro běh a ladění (Run/Debug configuration), viz odkazy v rámečku níže. Tutoriály k spouštění/ladění skriptů v PyCharm na stránkách JetBrains: * [[https://www.jetbrains.com/pycharm/webhelp/creating-and-editing-run-debug-configurations.html|Vytváření a úpravy konfigurací pro běh a ladění]] * [[https://www.jetbrains.com/pycharm/webhelp/creating-and-saving-temporary-run-debug-configurations.html|Vytváření a ukládání //dočasných// konfigurací pro běh a ladění]] PyCharm se pro každý skript/soubor snaží odhadnout výchozí konfiguraci (která může a nemusí být tím, co se souborem skutečně chcete dělat). Pokud se PyCharmu jeho odhad nepovede, musíte konfiguraci změnit ručně, viz návody v rámečku. Všechny dostupné konfigurace (výchozí i ručně specifikované) najdete v drop-down boxu v nástrojové liště (vedle zeleného tlačítka **Run**). ++++ ==== Spouštění pomocí nástroje Run ==== ++++ Skript spustí v nové instanci Pythonu: | Možnost 1: - V drop-down boxu vyberte příslušnou konfiguraci (budete-li ji používat opakovaně, tento krok znovu samozřejmě provádět nemusíte). - Stiskněte zelené tlačítko **Run** (nebo použijte klávesovou zkratku **Shift-F10**). Možnost 2: - V menu **Run** zvolte položku **Run...** (**Alt-Shift-F10**). - V následném okně vyberte konfiguraci, kterou chcete spustit. ++++ ===== Spouštění testů v PyCharm ===== Opět existuje několik způsobů, jak testy spustit. Vyberte si ten, který vám nejvíc vyhovuje. ==== Spuštění testů z jednoho modulu v Python shellu ==== ++++ Spustí testy v jednom modulu: | Pokud chcete modul testovat tímto způsobem, je třeba mít přímo v kódu modulu zajištěno vykonání testů, tedy např: if __name__=="__main__": import doctest doctest.testmod() v případě doctestů, nebo if __name__=="__main__": import unittest unittest.main() v případě použití modulu ''unittest''. Postupujte jako v případě spuštění normálního skriptu, viz předchozí sekce (označte celý kód a nechte jej ohodnotit v Python konzoli). ++++ ==== Spuštění testů jednoho modulu v nástroji Test ==== ++++ Spustí testy v jednom modulu. | - Otevřete modul s testy v editoru. PyCharm pravděpodobně správně odhalí, že soubor obsahuje unittesty a vytvoří výchozí konfiguraci. - Proveďte jednu z následujících akci: * Klikněte pravým tlačítkem na název souboru v okně **Project**. Z kontextové nabídky vyberte možnost **Run 'Unittests in ...'** * V drop-down menu v nástrojové liště vyberte **Unittests in ...** a klikněte na zelené tlačítko **Run**. * Z menu **Run** vyberte položku **Run ...** a vyberte konfiguraci **Unittest in ...** - Výsledky testů byste měli vidět v přehledné stromové struktuře v okně nástroje Run. Pokud PyCharm z nějakého důvodu nenabízí výchozí konfiguraci **Unittests in ...**, můžete si ji ručně nadefinovat, viz postup níže. ++++ 2017-11-30: Dnes jsme zjistili, že v učebně 307 v PyCharm Community tato možnost nefunguje správně. Pokud narážíte na podobné problémy, zkuste si běhovou konfiguraci nadefinovat ručně (viz následující popis). Stačí použít **Target** Python s názvem testovaného modulu, např. **test_readClassificationFromFile**. Možnost s **Target** Path občas nefunguje. ==== Spuštění všech testů v adresáři (projektu) najednou v nástroji Test ==== ++++ Spustí všechny testy. | Pro tuto možnost je nutné nadefinovat si vlastní konfiguraci pro běh a ladění. - V menu **Run** vyberte položku **Edit Configurations ...**. - V otevřeném dialogovém okně **Run/Debug configurations** klikněte na tlačítko **zelené plus**. - V nabídce, která se objeví, vyberte **Python tests** > **Unittests**. Vytvoří se prázdná konfigurace, kterou je třeba vyplnit v pravé části dialogu. - Vložte jméno konfigurace do políčka **Name**, např. "All tests". - Na záložce **Configuration**, ve skupině **Unittests**, vyberte pro položku **Target** možnost **Path**. - V editačním poli pod **Target** vložte cestu k vašim souborům s testy, tedy např. "/skola/rph/spam". - Do pole **Pattern** vložte vzor pro názvy souborů, v nichž se mají hledat testy, např. "test_*.*". - Ostatní nastavení by nemělo být třeba měnit. Po kliknutí na **OK** by měla být konfigurace dokončena a připravena k použití. - Spusťte konfiguraci. V okně s výsledky byste měli vidět, že se spustily testy ze všech souborů "test_*.py". ++++