Programavimas

Kaip supakuoti „Python“ programas su „BeeWare“ portfeliu

„Python“ trūksta kelių sričių. Pavyzdžiui, „Python“ nėra greičiausia kalba, tačiau trečiųjų šalių bibliotekos, pvz., „NumPy“, leidžia jums tai išspręsti. Vis dėlto „Python“ trūkumų yra pakuotėse. Tai reiškia, kad „Python“ trūksta nuoseklaus vidinio mechanizmo, kaip iš programos sukurti atskirą dvejetainį failą. Eik ir Rūdis tai daryk. Kodėl negali „Python“?

Dažniausiai tai susiję su tuo, kad „Python“ dar palyginti neseniai savo istorijoje neturi tokių naudojimo atvejų kultūros. Taigi tik palyginti neseniai pradėjo rodytis trečiųjų šalių moduliai, leidžiantys „Python“ programas supakuoti kaip atskirus dvejetainius failus. „PyInstaller“, kurį apžvelgiau anksčiau, yra viena iš tokių programų. Šiame straipsnyje apžvelgsime dar elegantiškesnį ir galingesnį „Python“ programų pakuočių įrankį „BeeWare's Portfelis“.

[Taip pat apie: „Python virtualenv“ ir „venv do and donts“

Tačiau yra dvi išlygos, kurias verta atkreipti dėmesį į „Portfelį“. Pirma, „Portfelis“ nedaro pakavimo tarp platformų; turite kurti platformą, kurią diegiate. Antra, „Portfelis“ geriausiai veikia su programomis, kuriose naudojamas tam tikras GUI įrankių rinkinys. Toliau išsamiai aptarsime šias problemas.

Kas yra „BeeWare“ portfelis?

Portfelis yra bendro „BeeWare“ įrankių rinkinio, skirto kurti programas, dalis, kai skirtingi kūriniai vienas kitą papildo. Pavyzdžiui, „BeeWare“ sukurtas „Kivy“ leidžia jums sukurti „Python“ platformos GUI programas, veikiančias ne tik visose pagrindinėse OS platformose, bet ir žiniatinklyje. Bet čia daugiausia dėmesio skirsime „Portfeliui“, kurį galima naudoti su kitais įrankiais arba be jų.

Portfelis pakuoja programas visoms palaikomoms OS, naudodamas bendrą tos platformos programų formatą:

  • „Microsoft Windows“ (MSI diegimo programa)
  • „macOS“ (.app formato failas)
  • „Linux“ („AppImage“)
  • „iOS“ („Xcode“ projektas)
  • „Android“ („Gradle“ projektas)

Norėdami diegti „iOS“ ar „Android“, jums reikės tų platformų kūrimo rinkinių.

Vienas dalykas, kurį daro Portfelisne parama yra kelių platformų diegimas. Pavyzdžiui, jei esate „Windows“ vartotojas, negalite sukurti „MacOS“ programos; tam reikės „MacOS“. Kiti „Python“ programų paketai yra panašiai riboti, todėl šis apribojimas jokiu būdu nėra išskirtinis tik „Portfeliui“.

Portfelis taip pat nėra „kompiliatorius“ - jis nepaverčia „Python“ programų į jų gimtąsias mašininio kodo atitikmenis. Jūsų programos nebus paleistos greičiau, kai bus įdiegtos kaip portfelio programos, nei įprastai.

Portfelio projekto nustatymas

„Portfelis“ reikalauja, kad sukurtumėte specialų projekto katalogą su savo virtualia aplinka. Jei dar nesate susipažinę su „venv“, kaip vadinama „Python“ virtualiomis aplinkomis, verta paspartinti jas, nes pažangiausias „Python“ kūrimas aplink juos labai sukasi.

Nustačius venv irpip įdiegti portfelį į jį naudosite savo „Briefcase“ komandų eilutės įrankius, kad nustatytumėte, tvarkytumėte ir pristatytumėte „Portfelio“ paketinius projektus. Tai panašu į įrankių, tokių kaip „Poezija“, veikimo būdą: dauguma jūsų aukšto lygio sąveikų su projektu vyksta per šį įrankį, todėl jums nereikia rankiniu būdu kurti failų ar redaguoti konfigūracijų.

Norėdami pradėti naują „Portfelio“ projektą, atidarykite CLI savo projekto kataloge, suaktyvinkite virtualią aplinką (darant prielaidą, kad nenorite naudoti IDE CLI, kad tai padarytumėte automatiškai) ir įveskiteportfelis naujas. Tai sukuria pastolius jūsų projekto kataloge „Portfelis“.

Iš pradžių turėsite atsakyti į keletą klausimų apie projektą ir daugumą jų galite tiesiog paspaustiĮveskite priimti numatytąjį. Bet vienas iš klausimų, kurie jums bus užduodami - iš tikrųjų paskutinis, yra labai svarbus: GUI sistemos pasirinkimas.

Vienas iš kitų „BeeWare“ pasiūlymų yra vartotojo sąsajos įrankių rinkinys, vadinamas „Toga“, skirtas kurti GUI „Python“ programose naudojant platformoje esančius vartotojo sąsajos komponentus. Jei norite pereiti mokytis „Toga“, taip pat dirbdami su „Portfeliu“, niekas netrukdo. Arba galite pasirinkti „Nėra“ ir sukurti programą „be galvos“, kuri veikia iš komandinės eilutės, arba galite naudoti trečiosios šalies vartotojo sąsajos įrankių rinkinį ar langų sistemą, pvz., „Pyglet“ ar „PyQT“.

Atminkite, kad jei neįdiegsite jokio vartotojo sąsajos įrankių rinkinio, programa neturės jokio konsolės interaktyvumo - t. Y. Ji neatidarys konsolės lango ir nieko į konsolę neatspausdins. Tai naudinga, jei diegiate programą, kuriai nereikia konsolės sąveikos, pavyzdžiui, jei ji veikia kaip vietinis žiniatinklio serveris ir sąveikai naudoja žiniatinklio naršyklę. Tačiau kol kas nėra galimybės leisti „Portfelio“ programoms, kuriose nėra įdiegto vartotojo sąsajos paketo, veikti su konsole.

Portfelio projekto struktūra

Naujai inicijuotame „Portfelio“ programos kataloge yra keli failai, iš anksto įdiegti:

  • Viršutiniame programų katalogo lygyje yra projekto licencija,pyproject.toml failą, README failo pavyzdį „ReStructured Text“ formatu ir a.gitignore failas, kuris iš anksto pritaikytas bendrais katalogais, kad būtų praleistas iš bet kurios projektui sukurtos „Git“ saugyklos.
  • src kataloge yra jūsų programos šaltinio kodas su dviem pakatalogiais: vienas, kuriame yra programa (ji turi tą patį pavadinimą, kaip jūsų projekto katalogas), ir kita, kurioje yra programos metaduomenys.
  • Programų kataloge yraišteklių katalogas, kuris naudojamas tokiems ištekliams kaip programų piktogramos saugoti.

Portfelio projekto komandos

portfelis komanda yra tai, kaip jūs atliekate didžiąją dalį savo sąveikos su portfelio projektu. Mes padengėmenaujas aukščiau esančią komandą, kuri naudojama nustatant aplanko projektą „Portfelis“. Tačiau per „Portfelio“ programos gyvavimo ciklą paprastai reikės naudoti daugybę kitų komandų, o kai kurios iš jų gali būti šiek tiek priešingos.

Čia pateikiamos dažniausiai naudojamos portfelio komandos:

  • dev: Kai esate programų kataloge, ši komanda paleidžia tą programą„dev“ režimas. „Dev“ režimas leidžia paleisti programą su visa įdiegtų bibliotekų komplektacija, tačiau nereikia būti oficialiai supakuota pristatymui. Dažniausiai kurdami programą išbandysite ją naudodami „dev“ režimą. Jei kuri nors priklausomybė pasikeitė nuo paskutinio bėgimodev, naudoti-d vėliava juos atnaujinti.
  • statyti: Sukuria programos kopiją formoje, kuri reikalinga ją supakuoti platinti. Tai skiriasi nuodev tuo atveju, jei yra sumontuoti pastoliai, galite statyti skirtingoms platformoms.
  • atnaujinti: Atnaujina programos komponavimą. Tai greitas būdas įsitikinti, kad jūsų programos versijoje yra naujausias kodas, o ne naudojamasstatyti, kuris atkuria daug daugiau failų. Perduokite-d vėliava atnaujinti priklausomybes ir-r pažymėkite, kad atnaujintumėte išteklius (t. y. nukopijuotumėte išteklius iš savo programos versijos į versijos versiją).
  • paleisti: Paleidžiama sukurta programos versija. Tai iš esmės imituoja paketinės ir įdiegtos programos versijos paleidimą. Perduokite-u vėliava atnaujinti bet kokį kodą prieš paleidžiant.
  • pakuotė: Sukuria programos diegimo programos paketą iš sukurtos programos versijos. Galutinis to rezultatas yra artefaktas, kurį galite suteikti kitiems, kad įdiegtų jūsų programą, pvz., .MSI sistemoje „Windows“.

Štai keletas rečiau naudojamų „Portfelio“ komandų:

  • sukurti: Nepainioti sunaujassukurti sukuria programos diegimo programos pastolius - tai būdas sukurti programos diegimo programą konkrečiai platformai. Kai nustatote programą naudodaminaujas, jis tiekiamas su platformos, kurioje dirbate, pastoliais;sukurti leidžia jums pridėti pastolių kitai platformai, jei reikia.
  • patobulinti: Atnaujinami komponentai, naudojami programai pakuoti, pvz., „Wix“ sistema.
  • paskelbti: Paskelbia supakuotą programą leidinių kanale, pvz., Programų parduotuvėje. (Nuo šio rašymo ši funkcija dar neveikia.)

Apibendrinant galima pasakyti, kad tokia tvarka naudosite „Portfelio“ komandas įprastame programos gyvavimo cikle:

  • naujas sukurti programą
  • dev paleisti programą, kai ją dirbate
  • statyti sukurti programos versiją, kuri bus supakuota platinti
  • paleisti išbandyti supakuotą programos versiją
  • atnaujinti kad paketinė programos versija būtų atnaujinta keičiant kodą
  • pakuotė įdiegti supakuotą programos versiją su diegimo programa

Portfelio programos kūrimas

„Python“ programos sukūrimas kaip „Portfelio“ programa yra tas pats, kas sukurti bet kurią kitą „Python“ programą. Pagrindiniai klausimai susiję su projekto struktūra. Programos įėjimo taškas yra__main__.py programos kataloge, kuris įkeliamasapp.py iš to paties katalogo ir vykdopagrindinis (). Inicijuojant projektą, jame bus užpildytos kai kurių projekto failų vietos rezervavimo versijos, kurias galėsite sukurti arba pakeisti, jei reikia.

Jei pertvarkoteesamas Jei norite naudoti „Portfelį“, įsitikinkite, kad jį sukonstravote taip, kad jo įėjimo taškas būtų toks, kokio tikisi „Portfelis“. Pvz., Jei nesaugojote kodo asrc katalogą, turėsite perkelti kodą įsrc ir pašalinti bet kokius nesuderinamumus savo keliuose ir katalogų struktūrose.

Kitas dalykas, kurį reikia nepamiršti, yra tai, kaip tvarkyti trečiųjų šalių priklausomybę.pyproject.toml failas jūsų projekto kataloge kontroliuoja, kurias priklausomybes norite pridėti prie projekto. Jei jūsų projektas pavadintasMano projektastadapyproject.toml bus skyrius pavadinimu[tool.briefcase.app.myproject], sureikalauja eilutė, kurioje išvardyti visi reikalavimai, kaip jie būtų nurodyti areikalavimai.txt failą. Pavyzdžiui, jei jūsų projektui reikiaregex irjuoda, jūs nustatytumėte šią eilutęreikalauja = ["regex", "juoda"]. Tada naudotumėtėsportfelis dev -d atnaujinti projekto kūrimo versijos priklausomybes irportfelio atnaujinimas -d atnaujinti paketinės versijos priklausomybes.

Portfelio programos pakavimas ir pristatymas

Kai bėgsiportfelio paketas, pamatysite, kad jūsų programos perskirstymas pasirodys projekto katalogo pakatalogyje, kuris atitinka jūsų sukurtą platformą. Pavyzdžiui, „Microsoft Windows“ atveju katalogas buslangai, o perskirstomas bus.msi failas tuo pačiu pavadinimu kaip ir jūsų projektas. „Android“ ir „iOS“ rezultatai bus atitinkamai „Gradle“ ir „Xcode“ projektai, kuriuos reikės surinkti naudojant tuos įrankius, kad būtų galima įdiegti tose platformose.

Kaip padaryti daugiau su „Python“

  • Kaip paleisti „Anaconda“ šalia kitų Pitonų
  • Kaip naudoti „Python“ duomenų klases
  • Pradėkite naudoti „Python“ asinchronizavimą
  • Kaip naudoti „asyncio“ Python
  • 3 žingsniai iki „Python“ asinchroninio remonto
  • Kaip naudoti „PyInstaller“, norint sukurti „Python“ vykdomuosius failus
  • „Cython“ pamoka: kaip pagreitinti „Python“
  • Kaip įdiegti „Python“ išmaniuoju būdu
  • Kaip valdyti „Python“ projektus naudojant „Poeziją“
  • Kaip valdyti „Python“ projektus naudojant „Pipenv“
  • „Virtualenv“ ir „venv“: paaiškintos „Python“ virtualios aplinkos
  • „Python virtualenv“ ir „venv do and donts“
  • Paaiškinta „Python“ sriegimas ir antriniai procesai
  • Kaip naudotis „Python“ derintuvu
  • Kaip naudoti „Timeit“, kad būtų galima nustatyti „Python“ kodą
  • Kaip naudoti „cProfile“ „Python“ kodui nustatyti
  • Kaip konvertuoti „Python“ į „JavaScript“ (ir dar kartą)