Zabaľte aplikáciu Python s jej závislosťami
Webová agentúra » Digitálne správy » Zabaľte aplikáciu Python s jej závislosťami

Zabaľte aplikáciu Python s jej závislosťami

Pred časom som vyvinul aplikáciu v Pythone. Na nastavenie kontextu išlo o vytvorenie spustiteľného súboru schopného nasadiť a prístavný robotník-compose.yml uplatňovaním obchodných pravidiel. Aby som všetko neprepisoval, vytvoril som projekt v Pytón aby ste mohli využívať knižnicu prístavný robotník, komponovať ktorý je aj v Pythone. Keď bola moja aplikácia funkčná, musela byť zabudovaná do jedného súboru. Mojím cieľom bolo vygenerovať binárny súbor vrátane všetkých jeho závislostí (trochu ako Golang).

Pozor ! Generovanie binárneho súboru vás neoslobodzuje od inštalácie Pythonu na váš počítač. Binárny súbor nie je skompilovaná aplikácia, ale iba balík.

architektúra

Najprv si vytvoríte priečinok foobar vo vašom projekte. Toto bude obsahovať všetku vašu prácu.

1
2
3
4
5
6
projekt
|_ __main__.py
|_ foobar
|_ __init__.py
|_ __main__.py
|_cli.py

Ak ste narazili na tento článok, znamená to, že poznáte Python aspoň tak dobre ako ja, a teda viete, ako nainštalovať závislosti globálne alebo v VIRTUALENV.

Osobne realizujem svoj vývoj v a Docker-kontajner takže nainštalujem svoje závislosti ako globálne.

Tu je postup, ako nainštalovať závislosť.

1
$ pip install docopt

Potom môžete pracovať na svojom súbore cli.py. Tu je príklad s použitím knižnice docpt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# project/foobar/cli.py
z docpt import docpt
verzia = „1.0.0“
pomoc = « » »Foobar
Použitie:
verzia foobar
Voľby:
-h --help Zobrazí pomoc
Foobar je falošný open-source projekt vyvinutý Baptiste Donauxom.
„“ „
def hlavné():
argumenty = docopt(pomoc)
if argumenty["verzia"]:
vytlačiť (“Foobar verzia”, verzia)

Na spustenie vývojovej aplikácie bude potrebný súbor (v mojom prípade __init__.py je prázdny, ale povinný súbor).

1
2
3
4
5
6
# project/foobar/__main__.py
z . import cli
if __meno__ == " __ruka__ ":
cli.main()

Na zostavenie binárneho balíka budete potrebovať vstupný bod (projekt/__main__.py).

1
2
3
4
5
6
# project/__main__.py
z foobar import cli
if __meno__ == " __ruka__ ":
cli.main()

Teraz môžete svoju aplikáciu ľahko spustiť.

1
2
$ python ./foobar/version
('foobar version', „1.0.0“)

Zostavte statický binárny súbor

Workflow

Z čistého projektu (bez závislosti...), tu sú kroky, ktoré sa vykonajú.

  • Ak chcete vytvoriť VIRTUALENV a aktivujte ho
  • Nainštalujte závislosti a ukončite VIRTUALENV
  • Odstráňte súbory a priečinky, ktoré sa nachádzajú v VIRTUALENV/lib/python2.7/sites-packages, ktoré zodpovedajú priečinku jadro, priečinok vyrovnávacej pamäte, do kompilovaných súborov alebo informačných súborov.
  • Vytvorte priečinok na vytvorenie konečného súboru
  • Skopírujte závislosti, zdroje a vstupný súbor do novovytvoreného priečinka.
  • Vytvorte komprimovaný priečinok (. Zip) obsahu priečinka zostavy.
  • Vytvorte „binárny“ súbor s hlavičkou na určenie prostredia a k tomuto súboru pripojte obsah komprimovaného priečinka.

Hardcore

Tu sú technické kroky, ktoré treba dodržať.

1
2
3
4
5
6
7
8
9
10
11
12
$ virtualenv závislosti
$. ./dependencies/bin/activate
$ pip install docopt
$ deaktivovať
$ rm -rf $(nájsť ./dependencies/lib/python2.7/site-packages -print | egrep '(/pip/)|(__pycache__)|(.(pyc|dist-info|so)$)')
$ mkdir zostava
$ cp -R ./dependencies/lib/python2.7/site-packages/* ./foobar ./__main__.py ./build/
$ cd ./budovať
$ zip -r ../release.zip *
$ minúť '#!/usr/bin/env python' > ../vydanie
$ cat ../release.zip >> ../release
$ chmod +x ../release

záver

Teraz môžete jednoducho spustiť svoj binárny súbor. Zahŕňa celý svoj kontext.

1
2
$ ./verzia vydania
('foobar version', „1.0.0“)

Toto riešenie mi veľmi vyhovovalo na nasadenie aplikácie s jedným súborom. Môžete si stiahnuť archív vzorových súborov na reprodukciu mojej demonštrácie.

★ ★ ★ ★ ★