Python, tehokas ja monipuolinen kuin se on, puuttuu muutamia keskeisiä ominaisuuksia kättelyssä. Yhdelle Python ei tarjoa natiivimekanismia Python-ohjelman kokoamiseen itsenäiseksi suoritettavaksi paketiksi.

Ollakseen oikeudenmukainen Pythonin alkuperäinen käyttötapaus ei koskaan vaatinut erillisiä paketteja. Python-ohjelmia on yleensä ajettu paikoillaan järjestelmissä, joissa Python-tulkin kopio asui. Pythonin suosion kasvu on kuitenkin lisännyt Python-sovellusten käyttöä järjestelmissä, joissa ei ole asennettua Python Runtimea.,

useat kolmannet osapuolet ovat suunnitelleet ratkaisuja erillisten Python-sovellusten käyttöön. Porukan suosituin ja kypsin ratkaisu on PyInstaller. PyInstaller ei tee prosessi pakkaus Python sovellus mennä täysin kivuton, mutta se menee pitkälle siellä.

tässä artikkelissa me tutkia perusasiat PyInstaller kuten miten PyInstaller toimii, miten käyttää PyInstaller luoda standalone Python suoritettavan, miten hienosäätää Python-ohjelmatiedostoja voit luoda, ja miten välttää joitakin yleisiä sudenkuoppia, jotka menevät käyttämällä PyInstaller.,

Luo PyInstaller paketti

PyInstaller on Python paketti, asennettu pip (pip install pyinstaller). PyInstaller voidaan asentaa oletuksena Python asennus, mutta se on parasta luoda virtuaalinen ympäristö projekti, johon haluat paketin ja asentaa PyInstaller on.

PyInstaller toimii lukemalla Python-ohjelma, analysoimalla kaikki tuonti se tekee, ja niputtaminen kappaletta tuonnin kanssa ohjelma. PyInstaller lukee ohjelmassasi sen saapumispaikalta., Esimerkiksi, jos ohjelma on merkintä kohta on myapp.py, voit ajaa pyinstaller myapp.py suorittaa analyysi. PyInstaller voi tunnistaa ja automaattisesti paketin monia yhteisiä Python paketteja, kuten NumPy, mutta saatat joutua antamaan vihjeitä joissakin tapauksissa. (Lisää aiheesta myöhemmin.)

analysoituasi koodisi ja löydettyään kaikki käyttämänsä kirjastot ja moduulit, PyInstaller luo sitten ”spec-tiedoston.”Python-skripti, joiden tunniste on .spec tämä tiedosto sisältää tiedot siitä, miten Python-sovellus on pakattu., Kun käytät ensimmäistä kertaa Pyinstalleria sovelluksessasi, PyInstaller luo spec-tiedoston tyhjästä ja kansoittaa sen joidenkin sane-oletusarvojen avulla. Älä hylkää tätä tiedostoa; se on avain puhdistamiseen PyInstaller käyttöönotto!

Lopulta, PyInstaller yrittää tuottaa suoritettavan app, yhdistetty kaikki sen riippuvuudet. Kun se on valmis, alikansio nimeltä dist (oletuksena; voit vapaasti määrittää eri nimi) näkyy projektin hakemistoon., Tämä puolestaan sisältää hakemiston, joka on kytköksissä app — se on .exe tiedosto ajaa, yhdessä kaikki kirjastot ja muut täydentävät tarvittavat tiedostot.

Kaikki mitä sinun tarvitsee tehdä on jakaa ohjelma, sitten, on paketti ylös hakemisto .zip tiedosto tai jokin muu nippu. Nippu on yleensä poistettava hakemistosta, jossa käyttäjällä on kirjoitusoikeudet suoritettavaksi.

IDG

A .spec-tiedostoa käytetään suoritettavan luomiseen Pyinstallerin kanssa., Huomaa excludesnimiavaruudet. Nämä jätetään pois luotu nippu säästää tilaa.

Testaus PyInstaller paketti

Siellä on reilu mahdollisuus, että ensimmäinen yritys käyttää PyInstaller paketti sovellus ei ole täysin onnistunut.

Voit tarkistaa, onko PyInstaller paketti toimii, siirry hakemistoon, jossa mukana suoritettavan ja suorita .exe tiedoston siellä komentoriviltä., Jos se ei toimi, komentoriville tulostetut virheet antavat vihjeen siitä, mikä on vialla.

yleisin syy PyInstaller-paketin epäonnistumiseen on se, ettei PyInstaller onnistunut niputtamaan vaadittua tiedostoa. Kuten puuttuvat tiedostot kuuluvat osaksi muutama luokat:

  • Piilotettu tai puuttuu tuonti: Joskus PyInstaller voi havaita tuoda paketin tai kirjasto, tyypillisesti koska se tuodaan dynaamisesti. Paketti tai kirjasto on määriteltävä manuaalisesti.,
  • Puuttuu itsenäinen tiedostot: Jos ohjelma riippuu ulkoisten tietojen tiedostot, jotka täytyy olla mukana ohjelman, PyInstaller ei ole mitään keinoa tietää. Sinun täytyy manuaalisesti sisällyttää tiedostot.
  • puuttuvat binäärit: Here again, if your program depends on an external binary like a .DLL että PyInstaller ei tunnista, sinun täytyy manuaalisesti sisällyttää se.

hyvä uutinen on, että PyInstaller tarjoaa helpon tavan käsitellä edellä mainittuja ongelmia., .spec luoma tiedosto PyInstaller sisältää kentät voimme täyttää tarjota yksityiskohtia, jotka PyInstaller jäi.

Avaa .spec tiedosto tekstieditorissa ja etsi määritelmä Analysis objekti. Useat parametrit välitetään Analysis luettelot ovat tyhjiä, mutta ne voidaan muokata määrittää puuttuvat tiedot:

  • hiddenimports piilotettu tai puuttuu tuonti: Lisätä tähän luetteloon yhden tai useampia merkkijonoja nimet kirjastot haluat mukana app., Jos haluat lisätä pandas ja bokeh esimerkiksi, voit määrittää, että . Huomaa, että kyseiset kirjastot on asennettava samaan Pythonin tilanteeseen, jossa käytät Pyinstalleria.
  • datas varten puuttuu itsenäinen tiedostot: Lisää tähän yksi tai useampi tekniset tiedostot projektin puu, jonka haluat sisällyttää projektin kanssa., Jokainen tiedosto on kulunut tuple mikä osoittaa, että suhteellinen polku tiedostoon projektin hakemistoon suhteellinen polku sisällä jakelu hakemisto, johon haluat sijoittaa tiedoston. Esimerkiksi, jos sinulla on ollut-tiedoston ./models/mainmodel.dat että haluat sisällyttää teidän app, ja haluat sijoittaa sen matching alihakemistoon jakelu hakemistoon, voit käyttää ('./models/mainmodel.dat','./models') yksi merkintä hiddenimports luettelo. Huomaa, että voit käyttää glob-tyyli yleismerkkejä määrittää useamman kuin yhden tiedoston.,
  • binaries varten puuttuu itsenäinen binäärit: Kuten datas voit käyttää binaries siirtää luettelo tuplat joka määrittää sijainnit binäärit hankkeen puu ja niiden kohteet jakelu hakemistoon. Jälleen, voit käyttää glob-tyyli yleismerkkejä.

– Pitää muistaa, että kaikki luettelot siirtynyt Analysis voidaan ohjelmallisesti luotu aiemmin .spec tiedosto., Loppujen lopuksi .spec tiedosto on vain Python-skripti toisella nimellä.

Kun teet muutoksia .spec tiedosto, uusintana PyInstaller rakentaa paketti. Kuitenkin nyt, muista siirtää muutettu .spec tiedosto parametri (esim. pyinstaller myapp.spec). Testaa suoritustiedosto kuten ennenkin. Jos jokin on vielä rikki, voit muokata .spec – tiedostoa uudelleen ja toistaa prosessia, kunnes kaikki toimii.,

Lopuksi, kun olet tyytyväinen, että kaikki toimii kuten on tarkoitettu, haluat ehkä muokata .spec tiedosto estää pakattu app esittelee komentorivi-ikkunan, kun käynnistettiin. EXE objekti-asetukset .spec tiedosto, asettaa console=False. Konsolin tukahduttaminen on hyödyllistä, jos sovelluksessasi on GUI, etkä halua virheellistä komentorivin ikkunan johtavaa käyttäjää harhaan. Tietenkin, älä muuta tätä asetusta, jos sovellus vaatii komentoriviä.,

Puhdistettavaksi PyInstaller paketti

Kun sinulla on sovellus pakattu PyInstaller ja käynnissä oikein, seuraava asia, sinun todennäköisesti haluavat tehdä, on ohut se alas hieman. PyInstaller-paketteja ei tunneta svelten nimellä.

Koska Python on dynaaminen kieli, se on vaikea ennustaa, mitä tarvitaan suorituksen by tietyn ohjelma. Tästä syystä, kun PyInstaller havaitsee, paketti, tuonti, se sisältää kaiken, että paketti on, onko vai ei se on oikeastaan käyttää ajonaikana ohjelma.

Here ’ s the good news., PyInstaller sisältää mekanismin, jolla kokonaisia pakkauksia tai yksittäisiä nimiavaruuksia voidaan valikoivasti sulkea pois pakkauksista. Esimerkiksi, katsotaanpa sanoa oman ohjelman tuonti-paketti foo, joka sisältää foo.bar ja foo.bip. Jos tiedät, että ohjelma vain käyttää logiikkaa foo.bar, voit turvallisesti sulkea pois foo.bip ja säästää tilaa.

voit tehdä tämän, voit käyttää excludes parametri välitetään Analysis objekti .spec tiedosto., Voit siirtää nimilistan — huipputason moduulit tai pistemäiset nimiavaruudet-pois paketistasi. Esimerkiksi foo.bip poissulkemiseksi määrittelisit vain .

IDG

fyysisesti hakemistoon luotu PyInstaller. Koska suuri määrä tiedostoja hakemistosta, kolmannen osapuolen asennusohjelma, projekti, kuten NSIS voidaan käyttää pakata hakemisto, itsepurkautuva arkisto, ja automaattisesti luoda pikakuvakkeen sen suoritettavan.,

Yksi yleinen syrjäytymisen voit tehdä on tkinter, Python-kirjasto luoda yksinkertainen cross-platform graafinen käyttöliittymä. Oletuksena tkinter ja kaikki sen tukitiedostot ovat täynnä PyInstaller hanke. Jos et käytä tkinter projektin, voit jättää sen lisäämällä 'tkinter' ja excludes luettelo. Jättämällä tkinter vähentää koko paketti noin 7 MB.

toinen yleinen poissulkeminen on test suites., Jos paketti ohjelmasi tuonti on testi suite, testi suite voi päätyä osaksi PyInstaller paketti. Ellet itse suorita testisarjaa käyttöön otetussa ohjelmassasi, voit turvallisesti sulkea sen pois.

pitää mielessä, että poissulkemisia käyttäen luodut pakkaukset on testattava perusteellisesti ennen käyttöä. Jos päädyt pois toimintoja, joita käytetään jossain tulevaisuudessa skenaario et ennakoida, sovellus rikkoutuu.

PyInstaller vinkkejä

  • Rakenna PyInstaller paketin OS aiot käyttöön., PyInstaller ei tue cross-platform rakentaa. Jos sinun täytyy asentaa erillinen Python-sovellus MacOS, Linux, ja Windows-järjestelmissä, sitten sinun täytyy asentaa PyInstaller ja rakentaa erilliset versiot app jokainen näistä käyttöjärjestelmistä.
  • Rakenna PyInstaller-pakettisi sovellusta kehittäessäsi. Heti, kun tiedät, että sinun on otettava käyttöön projekti, jossa PyInstaller, rakentaa .spec tiedoston ja aloittaa jalostus PyInstaller paketti kehittämisen rinnalla app., Näin voit lisätä poissulkemisia tai sulkeumia, kun menet, ja testata, miten uusia ominaisuuksia otetaan käyttöön sovelluksen kanssa, kun kirjoitat niitä.
  • Älä käytä PyInstaller on --onefile – tilassa. PyInstaller sisältää komentorivin kytkin, --onefile, joka pakkaa koko sovelluksen yhdeksi itsestään purkautuva. Tämä kuulostaa hyvältä idealta — sinun täytyy toimittaa vain yksi tiedosto! – mutta siinä on sudenkuoppia. Kun käytät sovellusta, sen on ensin purettava kaikki suoritettavan tiedoston tiedostot väliaikaiseen hakemistoon., Jos sovellus on iso (esimerkiksi 200MB), purkaminen voi tarkoittaa useiden sekuntien viivettä. Käytä oletushakemistotilaa sen sijaan ja pakkaa kaikki vain .zip – tiedostona.
  • luo asentaja PyInstaller-sovelluksellesi. Jos haluat jokin tapa ottaa sovellus käyttöön muu kuin a .zip-tiedosto, harkitse asentaja apuohjelma kuten avoimen lähdekoodin Nullsoft Scriptable asennusjärjestelmä. Se lisää hyvin vähän yläpuolella koko suoritteen ja voit määrittää monia näkökohtia asennuksen, kuten luoda pikakuvakkeita suoritettavan.,
  • älä odota speedupeja. PyInstaller on pakkausjärjestelmä, ei Kääntäjä tai optimoija. Pyinstallerilla pakattu koodi ei toimi nopeammin kuin alkuperäisessä järjestelmässä. Jos haluat nopeuttaa Python-koodin, käytä C-nopeutettu kirjasto sopivan tehtävän tai projektin kuten Cython.,w nopeuttaa Python
  • Miten asenna Python fiksu tapa
  • Parempi Python project management Runoutta
  • Virtualenv ja venv: Python virtuaalisia ympäristöjä selitti
  • Python-virtualenv ja venv do: n ja kiellot
  • Python ketjuttaminen ja subprocesses selitti
  • Kuinka käyttää Python debuggeri
  • Kuinka käyttää aikaanse profiili Python-koodi
  • Kuinka käyttää cProfile profiloida Python-koodi
  • aloita async Python
  • Miten käyttää asyncio Python
  • Miten muuntaa Python JavaScript (ja takaisin)