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.
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
jabokeh
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: Kutendatas
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 .
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)