Pakkige Pythoni rakendus koos selle sõltuvustega
Veebiagentuur » Digitaalsed uudised » Pakkige Pythoni rakendus koos selle sõltuvustega

Pakkige Pythoni rakendus koos selle sõltuvustega

Mõni aeg tagasi arendasin Pythonis rakenduse. Konteksti määramiseks oli vaja luua käivitatav fail, mis suudab juurutada a docker-compose.yml ärireegleid rakendades. Et mitte kõike ümber kirjutada, lõin sisse projekti Python et saaks raamatukogu kasutada docker-kompositsiooni mis on ka Pythonis. Kui rakendus on toiminud, tuli see ehitada ühte faili. Minu eesmärk oli luua binaarfail koos kõigi selle sõltuvustega (natuke nagu Golang).

Tähelepanu! Binaarfaili genereerimine ei vabasta teid Pythoni arvutisse installimisest. Binaarfail ei ole kompileeritud rakendus, vaid lihtsalt pakett.

Arhitektuur

Kõigepealt loote kausta foobar oma projektis. See sisaldab kogu teie tööd.

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

Kui olete selle artikliga kokku puutunud, tähendab see, et tunnete Pythonit vähemalt sama hästi kui mina ja seetõttu teate, kuidas installida sõltuvusi globaalselt või virtualenv.

Isiklikult viin oma arendusi läbi a Docker-konteiner seega installin oma sõltuvused globaalsetena.

Siin on, kuidas installida sõltuvust.

1
$ pip installi docopt

Seejärel saate oma failiga töötada klip.py. Siin on näide raamatukogu kasutamisest docpt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# projekt/foobar/cli.py
Alates docpt import docpt
vabastamine = "1.0.0"
abi= « » » Foobar
Kasutus:
foobar versioon
Valikud:
-h --help Kuvab abi
Foobar on võlts avatud lähtekoodiga projekt, mille on välja töötanud Baptiste Donaux.
"" "
def põhiline():
argumendid = docopt(abi)
if argumendid["versioon"]:
print ("foobar versioon", versioon)

Arendusrakenduse käivitamiseks on vaja faili (minu puhul __init__.py on tühi, kuid vajalik fail).

1
2
3
4
5
6
# projekt/foobar/__main__.py
Alates . import cli
if __nimi__ == "__käsi__":
cli.main()

Binaarpaketi koostamiseks vajate sisenemispunkti (projekt/__main__.py).

1
2
3
4
5
6
# projekt/__main__.py
Alates foobar import cli
if __nimi__ == "__käsi__":
cli.main()

Nüüd saate oma rakendust hõlpsalt käivitada.

1
2
$ python ./foobar/ versioon
("foobar versioon", "1.0.0")

Ehitage staatiline binaarfail

Töövoo

Puhtast projektist (ilma sõltuvuseta…) on järgmised sammud, mida tehakse.

  • Et luua a virtualenv ja aktiveerige see
  • Installige sõltuvused ja väljuge virtualenv
  • Kustutage kaustas olevad failid ja kaustad virtualenv/lib/python2.7/sites-packages, mis vastavad kaustale pip, vahemälu kausta, kompileeritud failidele või teabefailidele.
  • Lõpliku faili koostamiseks looge kaust
  • Kopeerige sõltuvused, allikad ja sisendfail vastloodud kausta.
  • Loo tihendatud kaust (. Zip) ehituskausta sisust.
  • Looge keskkonna määramiseks päisega binaarfail ja lisage sellele failile tihendatud kausta sisu.

Hardcore

Siin on tehnilised sammud, mida järgida.

1
2
3
4
5
6
7
8
9
10
11
12
$ virtualenv sõltuvused
$. ./dependencies/bin/activate
$ pip installi docopt
$ desaktiveerida
$ rm -rf $(leia ./dependencies/lib/python2.7/site-packages -print | egrep '(/pip/)|(__pycache__)|(.(pyc|dist-info|so)$)')
$ mkdir ehitada
$ cp -R ./dependencies/lib/python2.7/site-packages/* ./foobar ./__main__.py ./build/
$ cd ./hoone
$ zip -r ../release.zip *
$ miss '#!/usr/bin/env python' > ../väljalase
$ cat ../release.zip >> ../release
$ chmod +x ../väljaanne

järeldus

Nüüd saate oma binaarfaili hõlpsalt käivitada. See hõlmab kogu selle konteksti.

1
2
$ ./väljalase versioon
("foobar versioon", "1.0.0")

See lahendus oli minu jaoks väga mugav ühe failiga rakenduse juurutamiseks. Minu demonstratsiooni taasesitamiseks saate alla laadida näidisfailide arhiivi.

★ ★ ★ ★ ★