Programování

Jak zabalit aplikace v Pythonu s Aktovkou BeeWare

Python v několika oblastech zaostává. Například Python není nejrychlejším jazykem, ale knihovny třetích stran, jako je NumPy, vám to umožní obejít. Tam, kde je Python nejvíce nedostatečný, je však balení. To znamená, že Pythonu chybí konzistentní vnitřní mechanismus pro generování samostatného binárního souboru z aplikace. Jdi a Rust to udělej. Proč nemůže Python?

Většinou jde o to, že Python nemá kulturu takových případů použití až relativně nedávno ve své historii. A tak se až relativně nedávno začaly zobrazovat moduly třetích stran, které umožňují balit aplikace Pythonu jako samostatné binární soubory. PyInstaller - který jsem dříve popsal - je jedna taková aplikace. V tomto článku se podíváme na ještě elegantnější a výkonnější nástroj pro balení aplikací v Pythonu, Aktovku BeeWare.

[Také na: Python virtualenv a venv dělá a nedělá]

O Aktovce však stojí za to poukázat na dvě upozornění. Za prvé, Aktovka nedělá cross-platformové balení; musíte stavět na platformě, pro kterou nasazujete. Za druhé, Aktovka funguje nejlépe s aplikacemi, které využívají nějakou sadu nástrojů GUI. O těchto problémech pojdeme dále.

Co je Aktovka BeeWare?

Aktovka je součástí obecné sady nástrojů BeeWare pro vytváření aplikací, přičemž různé části se navzájem doplňují. Například Kivy od BeeWare vám umožňují vytvářet aplikace pro různé platformy GUI v Pythonu, které běží nejen na všech hlavních platformách OS, ale také na webu. Ale zde se zaměříme na Aktovku, kterou lze použít s dalšími nástroji i bez nich.

Aktovka balíčky aplikací pro všechny operační systémy, které podporuje, prostřednictvím společného formátu pro aplikace na této platformě:

  • Microsoft Windows (instalační program MSI)
  • Operační Systém Mac (.aplikace formát souboru)
  • Linux (AppImage)
  • iOS (projekt Xcode)
  • Android (projekt Gradle)

K nasazení na iOS nebo Android budete potřebovat vývojové sady pro tyto platformy.

Jedna věc, kterou Aktovka děláne podpora je nasazení napříč platformami. Pokud jste například uživatelem systému Windows, nemůžete vytvořit aplikaci pro macOS; k tomu budete potřebovat macOS. Podobně omezené jsou i další balíčky aplikací pro Python, takže toto omezení není v žádném případě výlučné pro Aktovku.

Aktovka také není „kompilátor“ - netransformuje programy Pythonu na jejich nativní ekvivalenty strojového kódu. Vaše aplikace nebudou fungovat rychleji, když budou nasazeny jako Aktovky, než běžně.

Nastavení aktovky projektu

Aktovka vyžaduje, abyste nastavili vyhrazený adresář projektu s vlastním virtuálním prostředím. Pokud ještě nejste obeznámeni s „venvs“, jak se virtuální prostředí Pythonu nazývá, stojí za to se jim dostat do tempa, protože se kolem nich točí nejmodernější vývoj v Pythonu.

Poté, co jste nastavili venv apip nainstalovat kufřík do toho použijete vlastní nástroje příkazového řádku Aktovky k nastavení, správě a dodání projektů zabalených v Aktovce. To se podobá způsobu, jakým fungují nástroje jako Poetry: Většina vašich interakcí na vysoké úrovni s projektem probíhá prostřednictvím nástroje, takže nemusíte ručně vytvářet soubory ani upravovat konfigurace.

Chcete-li zahájit nový projekt Aktovky, otevřete rozhraní příkazového řádku ve svém adresáři projektu, aktivujte virtuální prostředí (za předpokladu, že k tomu nepoužíváte rozhraní příkazového řádku IDE automaticky) a zadejteaktovka nová. Tím vytvoříte lešení v adresáři projektu pro projekt Aktovky.

Nejprve budete muset odpovědět na několik otázek týkajících se projektu a pro většinu z nich stačí stisknoutEnter přijmout výchozí nastavení. Ale na jedné z otázek, které vám budou položeny - ve skutečnosti poslední - záleží velmi: volba rámce GUI, který se má použít.

Jednou z dalších nabídek společnosti BeeWare je sada nástrojů uživatelského rozhraní s názvem Toga pro vytváření grafických uživatelských rozhraní v programech Python s využitím komponent uživatelského rozhraní nativní pro platformu. Pokud se chcete naučit učit Togu a zároveň pracovat s Aktovkou, nic vám nebrání. Nebo můžete vybrat „Žádný“ a vytvořit „bezhlavou“ aplikaci, která běží z příkazového řádku, nebo můžete použít sadu nástrojů uživatelského rozhraní nebo okenní systém jiného výrobce, jako je Pyglet nebo PyQT.

Pokud nenainstalujete žádnou sadu nástrojů uživatelského rozhraní, aplikace nebude mít vůbec žádnou interaktivitu konzoly - tj. Neotevře okno konzoly a na konzolu nic nevytiskne. To je užitečné, pokud nasazujete program, který nevyžaduje interakci s konzolou - například pokud běží jako místní webový server a používá k interakci webový prohlížeč. Ale zatím neexistuje možnost umožnit spouštění programů Aktovky bez nainstalovaného balíčku uživatelského rozhraní pomocí konzoly.

Struktura aktovky projektu

Nově spuštěný adresář aplikace Aktovka je dodáván s několika předinstalovanými soubory:

  • Nejvyšší úroveň adresáře aplikace obsahuje licenci projektu,pyproject.toml soubor, ukázkový soubor README ve formátu ReStructured Text a a.gitignore soubor, který je předem přizpůsoben běžným adresářům, které lze vynechat z libovolného úložiště Git vytvořeného pro projekt.
  • Thesrc adresář obsahuje zdrojový kód vaší aplikace se dvěma podadresáři: jedním, který obsahuje aplikaci (má stejný název jako váš adresář projektu) a druhým, který obsahuje metadata aplikace.
  • Adresář aplikace obsahuje azdroje adresář, který slouží k ukládání prostředků, jako jsou ikony aplikací.

Příkazy projektu Aktovky

Theaktovka příkaz je způsob, jakým provádíte většinu svých interakcí s projektem Aktovky. Pokryli jsmeNový výše uvedený příkaz, který se používá k nastavení projektu Aktovky v dané složce. Během životního cyklu aplikace Aktovka ale obvykle budete muset použít mnoho dalších příkazů a některé z nich mohou být trochu neintuitivní.

Zde jsou nejběžnější příkazy Aktovky, které budete používat:

  • dev: Když jste v adresáři aplikace, tento příkaz tuto aplikaci spustírežim dev. Režim Dev vám umožní spustit aplikaci s úplným doplňkem nainstalovaných knihoven, ale bez nutnosti formálního zabalení pro doručení. Většinu času při vývoji aplikace otestujete její spuštění v režimu dev. Pokud se od posledního spuštění změnily nějaké závislostidev, použijte-d příznak k jejich aktualizaci.
  • stavět: Vytvoří kopii aplikace ve formě potřebné k zabalení pro distribuci. To se liší oddev v tom, že pokud je nainstalováno lešení, můžete stavět pro různé platformy.
  • Aktualizace: Aktualizuje sestavení aplikace. Toto je rychlý způsob, jak se ujistit, že sestavení vaší aplikace obsahuje nejnovější kód, nikoli použitístavět, který regeneruje mnohem více souborů. Předat-d příznak k aktualizaci závislostí a-r příznak k aktualizaci prostředků (tj. ke zkopírování prostředků z dev verze vaší aplikace do verze sestavení).
  • běh: Spustí vytvořenou verzi aplikace. To v podstatě simuluje spuštění zabalené a nasazené verze aplikace. Předat-u příznak k aktualizaci libovolného kódu před spuštěním.
  • balík: Vytvoří instalační balíček aplikace ze zabudované verze aplikace. Konečným výsledkem je artefakt, který můžete dát ostatním k instalaci vašeho programu - např. .MSI ve Windows.

Zde jsou některé z méně běžně používaných příkazů Aktovky:

  • vytvořit: Nesmí být zaměňována sNovývytvořit vytváří lešení pro instalační program aplikace - způsob, jak sestavit instalační program aplikace pro konkrétní platformu. Když nastavujete aplikaci pomocíNový, přichází s lešením pro platformu, na které pracujete;vytvořit v případě potřeby vám umožní přidat lešení pro jinou platformu.
  • vylepšit: Vylepšuje komponenty používané k zabalení aplikace, například rámec Wix.
  • publikovat: Publikuje zabalenou aplikaci na publikační kanál, jako je například obchod s aplikacemi. (V době psaní tohoto článku tato funkce ještě nefunguje.)

Abychom to shrnuli, je to pořadí, ve kterém byste použili příkazy Aktovky v typickém životním cyklu aplikace:

  • Nový k vytvoření aplikace
  • dev spustit aplikaci při práci na ní
  • stavět k vytvoření verze aplikace, která má být zabalena pro distribuci
  • běh otestovat spuštěnou zabalenou verzi aplikace
  • Aktualizace udržovat zabalenou verzi aplikace aktuální se změnami kódu
  • balík nasadit zabalenou verzi aplikace pomocí instalačního programu

Vytvoření aktovky aplikace

Vytvoření programu v Pythonu jako aplikace Aktovka je téměř stejné jako vytvoření jakékoli jiné aplikace v Pythonu. Mezi hlavní problémy patří struktura projektu. Vstupní bod aplikace je__main__.py v adresáři aplikace, který se načteapp.py ze stejného adresáře a provedehlavní(). Když inicializujete projekt, bude naplněn zástupnými verzemi některých souborů projektu, které můžete podle potřeby sestavit nebo nahradit.

Pokud transformujeteexistující projekt používat Aktovku, ujistěte se, že ji strukturujete takovým způsobem, že její vstupní bod je to, co Aktovka očekává. Například pokud jste kód neuložili do asrc adresáře, budete muset svůj kód přesunout dosrc a opravit všechny nekompatibility v jeho cestách a adresářových strukturách.

Další věc, kterou je třeba mít na paměti, je způsob řešení závislostí třetích stran. Thepyproject.toml soubor v adresáři projektu určuje, které závislosti se mají přidat do projektu. Pokud je váš projekt pojmenovánmůj projekt, pakpyproject.toml bude obsahovat sekci s názvem[tool.briefcase.app.myproject], svyžaduje řádek, který uvádí každý požadavek tak, jak by byl uveden v arequirements.txt soubor. Pokud váš projekt potřebuje napříkladregulární výraz aČerná, nastavíte tento řádek navyžaduje = ["regex", "černý"]. Pak byste použiliaktovka dev -d aktualizovat závislosti pro vývojovou verzi projektu aaktovka aktualizace -d k aktualizaci závislostí v zabalené verzi.

Balení a doručení aktovky s aplikacemi

Jakmile běžítebalíček aktovky, v podadresáři adresáře projektu, který odpovídá platformě, pro kterou jste vytvořili, se objeví redistribuovatelný program. Například pro Microsoft Windows bude adresářOknaa redistribuovatelný bude.msi soubor se stejným názvem jako váš projekt. Pro Android a iOS budou výsledky projekty pro Gradle a Xcode, a tyto bude nutné zkompilovat pomocí těchto nástrojů, aby bylo možné je nasadit na tyto platformy.

Jak udělat víc s Pythonem

  • Jak spustit Anacondu bok po boku s ostatními Pythony
  • Jak používat datové třídy Pythonu
  • Začněte s asynchronizací v Pythonu
  • Jak používat asyncio v Pythonu
  • 3 kroky k generální opravě asynchronního prostředí Pythonu
  • Jak používat PyInstaller k vytvoření spustitelných souborů Pythonu
  • Výukový program pro Cython: Jak zrychlit Python
  • Jak chytře nainstalovat Python
  • Jak spravovat projekty v Pythonu pomocí Poetry
  • Jak spravovat projekty Pythonu pomocí Pipenv
  • Virtualenv a venv: Vysvětlení virtuálních prostředí Pythonu
  • Python virtualenv a venv dělá a nedělá
  • Vysvětlení vláken a podprocesů v Pythonu
  • Jak používat debugger Pythonu
  • Jak používat timeit k profilování kódu Pythonu
  • Jak používat cProfile k profilování kódu Pythonu
  • Jak převést Python na JavaScript (a zpět)