Προγραμματισμός

Τρόπος συσκευασίας εφαρμογών Python με BeeWare Briefcase

Η Python υπολείπεται σε μερικές περιοχές. Για παράδειγμα, η Python δεν είναι η πιο γρήγορη γλώσσα, αλλά οι βιβλιοθήκες τρίτων όπως το NumPy σάς επιτρέπουν να το επιλύσετε. Όπου η Python είναι η πιο ανεπαρκής, είναι συσκευασία. Δηλαδή, η Python δεν διαθέτει έναν συνεπή εσωτερικό μηχανισμό για τη δημιουργία ενός αυτόνομου δυαδικού από μια εφαρμογή. Πήγαινε και Rust κάνε αυτό. Γιατί δεν μπορεί η Python;

Συνήθως καταλήγει στην Python να μην έχει κουλτούρα τέτοιων περιπτώσεων χρήσης μέχρι πρόσφατα στην ιστορία της. Έτσι, μόλις πρόσφατα άρχισαν να εμφανίζονται λειτουργικές μονάδες τρίτων που επιτρέπουν στις εφαρμογές Python να συσκευάζονται ως αυτόνομα δυαδικά αρχεία. Το PyInstaller - το οποίο κάλυψα προηγουμένως - είναι μια τέτοια εφαρμογή. Σε αυτό το άρθρο θα δούμε ένα ακόμη πιο κομψό και ισχυρό βοηθητικό πρόγραμμα για τη συσκευασία εφαρμογών Python, το BeeWare's Briefcase.

[Επίσης στις: Python virtualenv και venv do and donts]

Ωστόσο, υπάρχουν δύο προειδοποιήσεις που αξίζει να επισημάνουμε σχετικά με το Χαρτοφύλακα. Πρώτον, ο Χαρτοφύλακας δεν κάνει συσκευασίες μεταξύ πλατφορμών. πρέπει να βασιστείτε στην πλατφόρμα για την οποία χρησιμοποιείτε. Δεύτερον, ο Χαρτοφύλακας λειτουργεί καλύτερα με εφαρμογές που χρησιμοποιούν κάποιο είδος εργαλειοθήκης GUI. Θα αναφερθούμε παρακάτω σε αυτά τα ζητήματα.

Τι είναι ο Χαρτοφύλακας BeeWare;

Ο Χαρτοφύλακας είναι μέρος μιας γενικής σουίτας εργαλείων της BeeWare για τη δημιουργία εφαρμογών, με τα διάφορα κομμάτια να αλληλοσυμπληρώνονται. Για παράδειγμα, το BeeWare's Kivy σάς επιτρέπει να δημιουργείτε εφαρμογές GUI πολλαπλών πλατφορμών στην Python που εκτελούνται όχι μόνο σε όλες τις μεγάλες πλατφόρμες λειτουργικού συστήματος αλλά και στον ιστό. Αλλά εδώ θα επικεντρωθούμε στο Χαρτοφύλακα, ο οποίος μπορεί να χρησιμοποιηθεί με ή χωρίς τα άλλα εργαλεία.

Ο χαρτοφύλακας συσκευάζει εφαρμογές για όλα τα λειτουργικά συστήματα που υποστηρίζει μέσω μιας κοινής μορφής για εφαρμογές σε αυτήν την πλατφόρμα:

  • Microsoft Windows (πρόγραμμα εγκατάστασης MSI)
  • macOS (.app μορφή αρχείου)
  • Linux (AppImage)
  • iOS (έργο Xcode)
  • Android (έργο Gradle)

Για ανάπτυξη σε iOS ή Android, θα χρειαστείτε τα κιτ ανάπτυξης για αυτές τις πλατφόρμες.

Ένα πράγμα κάνει ο Χαρτοφύλακαςδεν Η υποστήριξη είναι ανάπτυξη πολλαπλών πλατφορμών. Για παράδειγμα, εάν είστε χρήστης των Windows, δεν μπορείτε να δημιουργήσετε μια εφαρμογή macOS. θα χρειαστείτε macOS για να το κάνετε αυτό. Άλλα πακέτα εφαρμογών για το Python είναι επίσης περιορισμένα, οπότε αυτός ο περιορισμός δεν είναι καθόλου αποκλειστικός στο Χαρτοφύλακα.

Ο Χαρτοφύλακας δεν είναι επίσης "μεταγλωττιστής" - δεν μετατρέπει τα προγράμματα Python σε εγγενή ισοδύναμα κώδικα μηχανής. Οι εφαρμογές σας δεν θα εκτελούνται γρηγορότερα όταν αναπτύσσονται ως εφαρμογές χαρτοφύλακα από ό, τι συνήθως.

Ρύθμιση έργου χαρτοφύλακα

Ο Χαρτοφύλακας απαιτεί να δημιουργήσετε έναν ειδικό κατάλογο έργων με το δικό του εικονικό περιβάλλον. Αν δεν είστε εξοικειωμένοι με το "venvs" ακόμα, καθώς ονομάζονται εικονικά περιβάλλοντα Python, αξίζει να τα καταφέρετε, καθώς η εξέλιξη της Python τελευταίας τεχνολογίας περιστρέφεται έντονα γύρω τους.

Αφού δημιουργήσετε ένα venv καιpip εγκαταστήστε χαρτοφύλακα σε αυτό, θα χρησιμοποιήσετε το εργαλείο γραμμής εντολών του Χαρτοφύλακα για να ρυθμίσετε, να διαχειριστείτε και να παραδώσετε έργα με χαρτοφύλακα. Αυτό μοιάζει με τον τρόπο με τον οποίο λειτουργούν εργαλεία όπως το Poetry: Οι περισσότερες από τις υψηλού επιπέδου αλληλεπιδράσεις σας με το έργο πραγματοποιούνται μέσω του εργαλείου, επομένως δεν χρειάζεται να δημιουργείτε χειροκίνητα αρχεία ή να επεξεργάζεστε διαμορφώσεις.

Για να ξεκινήσετε ένα νέο έργο χαρτοφύλακα, ανοίξτε το CLI στον κατάλογο του έργου σας, ενεργοποιήστε το εικονικό περιβάλλον (υποθέτοντας ότι δεν χρησιμοποιείτε CLI ενός IDE για να το κάνετε αυτό αυτόματα) και πληκτρολογήστενέο χαρτοφύλακα. Αυτό δημιουργεί ικριώματα στον κατάλογο του έργου σας για ένα έργο χαρτοφύλακα.

Θα πρέπει πρώτα να απαντήσετε σε μερικές ερωτήσεις σχετικά με το έργο και για τα περισσότερα μπορείτε απλώς να πατήσετεΕισαγω για να αποδεχτείτε την προεπιλογή. Αλλά ένα από τα ερωτήματα που θα σας ρωτηθούν - το τελευταίο, στην πραγματικότητα - έχει μεγάλη σημασία: η επιλογή του πλαισίου GUI για χρήση.

Μία από τις άλλες προσφορές του BeeWare είναι μια εργαλειοθήκη UI που ονομάζεται Toga, για τη δημιουργία GUI σε προγράμματα Python χρησιμοποιώντας στοιχεία UI που είναι εγγενή πλατφόρμα. Αν θέλετε να μάθετε Toga ενώ εργάζεστε και με το Χαρτοφύλακα, δεν σας εμποδίζει τίποτα. Ή θα μπορούσατε να επιλέξετε "Κανένα" και να δημιουργήσετε μια "χωρίς κεφαλή" εφαρμογή που εκτελείται από τη γραμμή εντολών ή θα μπορούσατε να χρησιμοποιήσετε μια εργαλειοθήκη UI τρίτου μέρους ή ένα σύστημα παραθύρου όπως Pyglet ή PyQT.

Λάβετε υπόψη ότι εάν δεν εγκαταστήσετε κιτ εργαλείων διεπαφής χρήστη, η εφαρμογή δεν θα έχει καμία αλληλεπίδραση κονσόλας - δηλαδή, δεν θα ανοίξει παράθυρο κονσόλας και δεν θα εκτυπώσει τίποτα στην κονσόλα. Αυτό είναι χρήσιμο εάν αναπτύσσετε ένα πρόγραμμα που δεν απαιτεί αλληλεπίδραση κονσόλας - για παράδειγμα, εάν εκτελείται ως τοπικός διακομιστής ιστού και χρησιμοποιεί πρόγραμμα περιήγησης ιστού για αλληλεπίδραση. Ωστόσο, δεν υπάρχει ακόμη καμία επιλογή να επιτρέπεται η εκτέλεση προγραμμάτων Briefcase χωρίς εγκατεστημένο πακέτο UI με κονσόλα.

Δομή έργου χαρτοφύλακα

Ένας πρόσφατα εγκατεστημένος κατάλογος εφαρμογών χαρτοφύλακα συνοδεύεται από πολλά προεγκατεστημένα αρχεία:

  • Το ανώτερο επίπεδο του καταλόγου εφαρμογών περιέχει την άδεια του έργου,pyproject.toml αρχείο, ένα δείγμα αρχείου README σε μορφή ReStructured Text και ένα.gitignore αρχείο που έρχεται προ-προσαρμοσμένο με κοινούς καταλόγους για παράλειψη από οποιοδήποτε αποθετήριο Git που δημιουργήθηκε για το έργο.
  • οsrc Ο κατάλογος περιέχει τον πηγαίο κώδικα της εφαρμογής σας, με δύο υποκαταλόγους: έναν που περιέχει την εφαρμογή (έχει το ίδιο όνομα με τον κατάλογο έργου σας) και έναν που περιέχει τα μεταδεδομένα της εφαρμογής.
  • Ο κατάλογος εφαρμογών περιέχει έναπόροι κατάλογος, ο οποίος χρησιμοποιείται για την αποθήκευση πόρων, όπως εικονίδια εφαρμογών.

Εντολές έργου χαρτοφύλακα

οχαρτοφύλακας Η εντολή είναι πώς εκτελείτε τις περισσότερες αλληλεπιδράσεις σας με ένα έργο χαρτοφύλακα. Καλύψαμε τονέος παραπάνω εντολή, η οποία χρησιμοποιείται για τη ρύθμιση ενός έργου χαρτοφύλακα σε έναν δεδομένο φάκελο. Ωστόσο, συνήθως θα πρέπει να χρησιμοποιήσετε πολλές άλλες εντολές κατά τη διάρκεια του κύκλου ζωής μιας εφαρμογής Χαρτοφύλακα και ορισμένες από αυτές μπορεί να είναι λίγο αντίθετες.

Ακολουθούν οι πιο κοινές εντολές χαρτοφύλακα που θα χρησιμοποιήσετε:

  • dev: Όταν βρίσκεστε σε έναν κατάλογο εφαρμογών, αυτή η εντολή εκτελεί αυτήν την εφαρμογήλειτουργία dev. Η λειτουργία Dev σάς επιτρέπει να εκτελείτε την εφαρμογή με το πλήρες συμπλήρωμα των εγκατεστημένων βιβλιοθηκών, αλλά χωρίς να χρειάζεται να συσκευαστείτε επίσημα για παράδοση. Τις περισσότερες φορές, κατά την ανάπτυξη της εφαρμογής σας, θα τη δοκιμάσετε με λειτουργία dev. Εάν έχουν αλλάξει εξαρτήσεις από την τελευταία φορά που εκτελέσατεdev, Χρησιμοποιήστε το-ρε για να τα ενημερώσετε.
  • χτίζω: Δημιουργεί ένα αντίγραφο της εφαρμογής στη φόρμα που απαιτείται για τη συσκευασία για διανομή. Αυτό διαφέρει απόdev σε αυτό μπορείτε να δημιουργήσετε διαφορετικές πλατφόρμες εάν είναι εγκατεστημένο το ικριώματα.
  • εκσυγχρονίζω: Ενημερώνει μια έκδοση εφαρμογών. Αυτός είναι ο γρήγορος τρόπος για να βεβαιωθείτε ότι η έκδοση της εφαρμογής σας έχει τον πιο πρόσφατο κώδικα και όχι τη χρήσηχτίζω, η οποία αναπαράγει πολλά περισσότερα αρχεία. Πέρνα το-ρε σημαίας για ενημέρωση εξαρτήσεων και το επισήμανση για ενημέρωση πόρων (δηλαδή, για αντιγραφή πόρων από την έκδοση dev της εφαρμογής σας στην έκδοση build).
  • τρέξιμο: Εκτελεί την ενσωματωμένη έκδοση της εφαρμογής. Αυτό ουσιαστικά προσομοιώνει την εκτέλεση της συσκευασμένης και αναπτυγμένης έκδοσης της εφαρμογής. Πέρνα το για να ενημερώσετε οποιονδήποτε κωδικό πριν από την εκτέλεση.
  • πακέτο: Δημιουργεί ένα πακέτο προγράμματος εγκατάστασης εφαρμογών από την ενσωματωμένη έκδοση της εφαρμογής. Το τελικό αποτέλεσμα αυτού είναι ένα τεχνούργημα που μπορείτε να δώσετε σε άλλους για να εγκαταστήσουν το πρόγραμμά σας - π.χ. ένα .MSI στα Windows.

Ακολουθούν μερικές από τις λιγότερο συχνά χρησιμοποιούμενες εντολές Χαρτοφύλακα:

  • δημιουργώ: Δεν πρέπει να συγχέεται μενέοςδημιουργώ δημιουργεί τα ικριώματα για ένα πρόγραμμα εγκατάστασης εφαρμογών - έναν τρόπο δημιουργίας του προγράμματος εγκατάστασης της εφαρμογής για μια συγκεκριμένη πλατφόρμα. Όταν ρυθμίζετε μια εφαρμογή μενέος, έρχεται με ικριώματα για την πλατφόρμα στην οποία εργάζεστε.δημιουργώ σας επιτρέπει να προσθέσετε σκαλωσιές για άλλη πλατφόρμα, εάν χρειάζεται.
  • αναβαθμίζω: Αναβαθμίζει τα στοιχεία που χρησιμοποιούνται για τη συσκευασία της εφαρμογής, όπως το πλαίσιο Wix.
  • δημοσιεύω: Δημοσιεύει τη συσκευασμένη εφαρμογή σε ένα κανάλι δημοσίευσης, όπως ένα κατάστημα εφαρμογών. (Από αυτό το γράψιμο, αυτή η λειτουργία δεν λειτουργεί ακόμη.)

Συνοψίζοντας, αυτή είναι η σειρά με την οποία θα χρησιμοποιούσατε τις εντολές Briefcase στον τυπικό κύκλο ζωής της εφαρμογής:

  • νέος για να δημιουργήσετε την εφαρμογή
  • dev για να εκτελέσετε την εφαρμογή καθώς εργάζεστε σε αυτήν
  • χτίζω για να δημιουργήσετε μια έκδοση της εφαρμογής που θα συσκευαστεί για διανομή
  • τρέξιμο για να δοκιμάσετε να εκτελέσετε τη συσκευασμένη έκδοση της εφαρμογής
  • εκσυγχρονίζω για να διατηρείτε ενημερωμένη τη συσκευασμένη έκδοση της εφαρμογής με αλλαγές κώδικα
  • πακέτο για να αναπτύξετε τη συσκευασμένη έκδοση της εφαρμογής με ένα πρόγραμμα εγκατάστασης

Δημιουργία εφαρμογών χαρτοφύλακα

Η δημιουργία ενός προγράμματος Python ως εφαρμογής χαρτοφύλακα είναι παρόμοια με τη δημιουργία οποιασδήποτε άλλης εφαρμογής Python. Τα κύρια ζητήματα αφορούν τη δομή του έργου. Το σημείο εισόδου της εφαρμογής είναι__main__.py στον κατάλογο εφαρμογών, ο οποίος φορτώνειapp.py από τον ίδιο κατάλογο και εκτελείκύριος(). Όταν προετοιμάζετε ένα έργο, θα συμπληρωθεί με εκδόσεις placeholder ορισμένων αρχείων έργου, τις οποίες μπορείτε να δημιουργήσετε ή να αντικαταστήσετε ανάλογα με τις ανάγκες.

Εάν μεταμορφώνετε έναυπάρχον έργο για να χρησιμοποιήσετε το Χαρτοφύλακα, βεβαιωθείτε ότι το δομήσατε με τέτοιο τρόπο ώστε το σημείο εισόδου του να είναι αυτό που περιμένει ο Χαρτοφύλακας. Για παράδειγμα, εάν δεν αποθηκεύσατε τον κωδικό σεsrc κατάλογο, θα πρέπει να μετακινήσετε τον κωδικό σαςsrc και διορθώστε τυχόν ασυμβατότητες στις διαδρομές και τις δομές καταλόγου.

Το άλλο πράγμα που πρέπει να θυμάστε είναι πώς να χειριστείτε τις εξαρτήσεις τρίτων. οpyproject.toml αρχείο στον κατάλογο έργου σας ελέγχει ποιες εξαρτήσεις να προσθέσετε στο έργο. Εάν το έργο σας έχει όνοματο προτζεκτ μου, έπειταpyproject.toml θα περιέχει μια ενότητα με το όνομα[tool.briefcase.app.myproject], μεαπαιτεί γραμμή που απαριθμεί κάθε απαίτηση όπως θα καθοριζόταν στο ααπαιτήσεις.txt αρχείο. Εάν το έργο σας χρειάζεται, για παράδειγμα,regex καιμαύρος, θα θέλατε αυτή τη γραμμή σεαπαιτεί = ["regex", "black"]. Στη συνέχεια, θα χρησιμοποιούσατεχαρτοφύλακας dev -d για να ενημερώσετε τις εξαρτήσεις για την έκδοση ανάπτυξης του έργου καιενημέρωση χαρτοφύλακα -d για ενημέρωση εξαρτήσεων στη συσκευασμένη έκδοση.

Συσκευασία και παράδοση χαρτοφύλακα

Μόλις τρέξετεπακέτο χαρτοφύλακα, θα δείτε μια αναδιανομή για το πρόγραμμά σας να εμφανίζεται σε έναν υποκατάλογο του καταλόγου έργου που αντιστοιχεί στην πλατφόρμα που δημιουργήσατε. Για τα Microsoft Windows, για παράδειγμα, ο κατάλογος θα είναιπαράθυρα, και το αναδιανεμήσιμο θα είναι.msi αρχείο με το ίδιο όνομα με το έργο σας. Για Android και iOS, τα αποτελέσματα θα είναι έργα για το Gradle και το Xcode, αντίστοιχα, και αυτά θα πρέπει να συγκεντρωθούν χρησιμοποιώντας αυτά τα εργαλεία για να αναπτυχθούν σε αυτές τις πλατφόρμες.

Πώς να κάνετε περισσότερα με την Python

  • Πώς να τρέξετε το Anaconda δίπλα-δίπλα με άλλους Pythons
  • Πώς να χρησιμοποιήσετε γυαλιά ηλίου Python
  • Ξεκινήστε με το async στο Python
  • Πώς να χρησιμοποιήσετε το asyncio στο Python
  • 3 βήματα για μια αναθεώρηση ασύγχρονου Python
  • Πώς να χρησιμοποιήσετε το PyInstaller για να δημιουργήσετε εκτελέσιμα Python
  • Εκμάθηση Cython: Πώς να επιταχύνετε το Python
  • Πώς να εγκαταστήσετε το Python με τον έξυπνο τρόπο
  • Πώς να διαχειριστείτε τα έργα Python με το Poetry
  • Πώς να διαχειριστείτε τα έργα Python με το Pipenv
  • Virtualenv και venv: Εξηγήθηκαν εικονικά περιβάλλοντα Python
  • Το Python virtualenv και το venv κάνουν και δεν πρέπει
  • Η εξήγηση και οι υποεπεξεργασίες Python εξηγούνται
  • Πώς να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων Python
  • Πώς να χρησιμοποιήσετε το χρονοδιάγραμμα για τον προφίλ κώδικα Python
  • Πώς να χρησιμοποιήσετε το cProfile για να προβάλετε τον κώδικα Python
  • Πώς να μετατρέψετε το Python σε JavaScript (και να επιστρέψετε ξανά)