5. Χρησιμοποιώντας Python σε macOS

Αυτό το έγγραφο αποσκοπεί στο να δώσει μια επισκόπηση της συμπεριφοράς που σχετίζεται με το macOS που θα πρέπει να γνωρίζετε για να ξεκινήσετε με την Python σε υπολογιστές Mac. Η Python σε Mac που εκτελεί macOS είναι πολύ παρόμοια με την Python σε άλλες πλατφόρμες που προέρχονται από το Unix, αλλά υπάρχουν κάποιες διαφορές στην εγκατάσταση και κάποιες δυνατότητες.

Υπάρχουν διάφοροι τρόποι για να αποκτήσετε και να εγκαταστήσετε την Python για macOS. Προκατασκευασμένες εκδόσεις των πιο πρόσφατων εκδόσεων της Python είναι διαθέσιμες από έναν αριθμό διανομέων. Πολλές από αυτές τις πληροφορίες περιγράφουν τη χρήση της Python που παρέχονται από την ομάδα κυκλοφορίας CPython για λήψη από την ιστοσελίδα python.org. Δείτε Alternative distributions για μερικές άλλες επιλογές.

5.1. Χρησιμοποιώντας Python για macOS από το python.org

5.1.1. Βήματα εγκατάστασης

For current Python versions (other than those in security status), the release team produces a Python for macOS installer package for each new release. A list of available installers is provided on the macOS downloads page. We recommend using the most recent supported Python version where possible. Current installers provide a universal2 binary build of Python which runs natively on all Macs (Apple Silicon and Intel) that are supported by a wide range of macOS versions, currently typically from at least macOS 10.15 Catalina on.

The downloaded file is a standard macOS installer package file (.pkg). File integrity information (such as checksum, size, and Sigstore signature) for each file is included on the release download page. Installer packages and their contents are signed and notarized with Python Software Foundation Apple Developer ID certificates to meet macOS Gatekeeper requirements.

For a default installation, double-click on the downloaded installer package file. This should launch the standard macOS Installer app and display the first of several installer steps.

../_images/mac_installer_01_introduction.png

Κάνοντας κλικ στο κουμπί Continue εμφανίζεται το Read Me για αυτόν τον εγκαταστάτη. Εκτός από άλλες σημαντικές πληροφορίες, το Read Me καταγράφει ποια έκδοση Python πρόκειται να εγκατασταθεί και σε ποιες εκδόσεις macOS υποστηρίζεται. Ίσως χρειαστεί να κάνετε κύλιση για να διαβάσετε ολόκληρο το αρχείο. Από προεπιλογή, αυτό το Read Me θα εγκατασταθεί επίσης στο /Applications/Python 3.16/ και θα είναι διαθέσιμο για ανάγνωση οποιαδήποτε στιγμή.

../_images/mac_installer_02_readme.png

Κάνοντας κλικ στο Continue προχωρά στην εμφάνιση της άδειας για την Python και για άλλο περιλαμβανόμενο λογισμικό. Στη συνέχεια θα χρειαστεί να Συμφωνήσετε με τους όρους άδειας πριν προχωρήσετε στο επόμενο βήμα. Αυτό το αρχείο άδειας θα εγκατασταθεί επίσης και θα είναι διαθέσιμο για ανάγνωση αργότερα.

../_images/mac_installer_03_license.png

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

../_images/mac_installer_04_installation_type.png

By pressing the Customize button, you can choose to omit or select certain package components of the installer. Click on each package name to see a description of what it installs. For details of the optional free-threaded feature, which is installed by default, see Installing free-threaded binaries.

../_images/mac_installer_05_custom_install.png

Σε κάθε περίπτωση, κάνοντας κλικ στο Install θα ξεκινήσει η διαδικασία εγκατάστασης ζητώντας άδεια για την εγκατάσταση νέου λογισμικού. Ένα όνομα χρήστη macOS με Administrator δικαιώματα είναι απαραίτητο καθώς η εγκατεστημένη Python θα είναι διαθέσιμη σε όλους τους χρήστες του Mac.

Όταν ολοκληρωθεί η εγκατάσταση, θα εμφανιστεί το παράθυρο Περίληψη.

../_images/mac_installer_06_summary.png

Διπλό κλικ στο εικονίδιο ή το αρχείο Install Certificates.command στο παράθυρο /Applications/Python 3.16/ για να ολοκληρώσετε την εγκατάσταση.

../_images/mac_installer_07_applications.png

Αυτό θα ανοίξει ένα προσωρινό παράθυρο κελύφους Terminal που θα χρησιμοποιήσει τη νέα Python για να κατεβάσει και να εγκαταστήσει ριζικούς πιστοποιητικούς SSL για τη χρήση του.

../_images/mac_installer_08_install_certificates.png

If Successfully installed certifi and update complete appear in the terminal window, the installation is complete. Close this terminal window and the installer window.

Μια προεπιλεγμένη εγκατάσταση θα περιλαμβάνει:

  • Ένας Python 3.16 φάκελος στον φάκελο Applications. Εδώ θα βρείτε το IDLE, το περιβάλλον ανάπτυξης που είναι τυπικό μέρος των επίσημων διανομών Python∙ και το Python Launcher, το οποίο χειρίζεται τα διπλά κλικ σε Python scripts από το macOS Finder.

  • Ένα πλαίσιο /Library/Frameworks/Python.framework, το οποίο περιλαμβάνει τον εκτελέσιμο κώδικα Python και τις βιβλιοθήκες. Το πρόγραμμα εγκατάστασης προσθέτει αυτήν την τοποθεσία στο shell path σας. Για να απεγκαταστήσετε την Python, μπορείτε να αφαιρέσετε αυτά τα τρία πράγματα. Symlinks στον εκτελέσιμο κώδικα Python τοποθετούνται στο /usr/local/bin/.

Σημείωση

Οι πρόσφατες εκδόσεις του macOS περιλαμβάνουν μια εντολή python3 στο /usr/bin/python3 που συνδέεται με μια συνήθως παλαιότερη και ελλιπή έκδοση της Python που παρέχεται από και για χρήση από τα εργαλεία ανάπτυξης της Apple, Xcode ή τα Command Line Tools for Xcode. Δεν θα πρέπει ποτέ να τροποποιήσετε ή να προσπαθήσετε να διαγράψετε αυτήν την εγκατάσταση, καθώς ελέγχεται από την Apple και χρησιμοποιείται από το λογισμικό που παρέχεται από την Apple ή από τρίτους. Εάν επιλέξετε να εγκαταστήσετε μια νεότερη έκδοση Python από το python.org, θα έχετε δύο διαφορετικές αλλά λειτουργικές εγκαταστάσεις Python στον υπολογιστή σας που μπορούν να συνυπάρχουν. Οι προεπιλεγμένες επιλογές εγκατάστασης θα πρέπει να διασφαλίσουν ότι η python3 θα χρησιμοποιηθεί αντί της συστήματος python3.

5.1.2. Πώς να εκτελέσετε ένα σενάριο Python

Υπάρχουν δύο τρόποι για να καλέσετε τον διερμηνέα Python. Εάν είστε εξοικειωμένοι με τη χρήση ενός κελύφους Unix σε ένα παράθυρο τερματικού, μπορείτε να καλέσετε python3.16 ή python3 προαιρετικά ακολουθούμενο από μία ή περισσότερες επιλογές γραμμής εντολών (περιγράφεται στο Command line and environment). Το εγχειρίδιο Python έχει επίσης μια χρήσιμη ενότητα σχετικά με using Python interactively from a shell.

Μπορείτε επίσης να καλέσετε τον ερμηνευτή μέσω ενός ενσωματωμένου αναπτυξιακού περιβάλλοντος. IDLE — Python editor and shell είναι ένας βασικός επεξεργαστής και περιβάλλον ερμηνευτή που περιλαμβάνεται με την τυπική διανομή Python. Το IDLE περιλαμβάνει ένα μενού Βοήθειας που σας επιτρέπει να αποκτήσετε πρόσβαση στην τεκμηρίωση Python. Εάν είστε εντελώς νέοι στην Python, μπορείτε να διαβάσετε την εισαγωγή του εγχειριδίου σε αυτό το έγγραφο.

Υπάρχουν πολλοί άλλοι επεξεργαστές και IDE διαθέσιμοι, δείτε Επεξεργαστές Κειμένου και IDEs για περισσότερες πληροφορίες.

Για να εκτελέσετε ένα αρχείο script Python από το παράθυρο τερματικού, μπορείτε να καλέσετε τον ερμηνευτή με το όνομα του αρχείου script:

python3.16 myscript.py

Για να εκτελέσετε το script σας από το Finder, μπορείτε είτε:

  • Σύρετε το στο Python Launcher.

  • Επιλέξτε το Python Launcher ως την προεπιλεγμένη εφαρμογή για να ανοίξετε το script σας (ή οποιοδήποτε .py script) μέσω του παραθύρου πληροφοριών Finder και κάντε διπλό κλικ σε αυτό. Το Python Launcher έχει διάφορες προτιμήσεις για να ελέγξει πώς εκκινείται το script σας. Η επιλογή-μεταφορά σας επιτρέπει να αλλάξετε αυτά για μία κλήση ή χρησιμοποιήστε το μενού Προτιμήσεις για να αλλάξετε τα πράγματα παγκοσμίως.

Να είστε προσεκτικοί ότι η εκτέλεση του script απευθείας από το macOS Finder μπορεί να παράγει διαφορετικά αποτελέσματα από την εκτέλεση από ένα παράθυρο τερματικού καθώς το script δεν θα εκτελείται στο συνήθη περιβάλλον κελύφους που περιλαμβάνει οποιαδήποτε ρύθμιση μεταβλητών περιβάλλοντος σε προφίλ κελύφους. Και, όπως με οποιοδήποτε άλλο script ή πρόγραμμα, να είστε σίγουροι για το τι πρόκειται να εκτελέσετε.

5.2. Alternative distributions

Εκτός από τον τυπικό εγκαταστάτη python.org για macOS, υπάρχουν τρίτες διανομές για macOS που μπορεί να περιλαμβάνουν πρόσθετη λειτουργικότητα. Ορισμένες δημοφιλείς διανομές και τα βασικά χαρακτηριστικά τους:

ActivePython

Εγκαταστάτης με συμβατότητα πολλών πλατφορμών, τεκμηρίωση

Anaconda

Δημοφιλή επιστημονικά modules (όπως numpy, scipy και pandas) και ο conda διαχειριστής πακέτων.

Homebrew

Διαχειριστής πακέτων για macOS που περιλαμβάνει πολλές εκδόσεις Python και πολλά τρίτα πακέτα Python (συμπεριλαμβανομένων των numpy, scipy και pandas).

MacPorts

Ένας άλλος διαχειριστής πακέτων για macOS που περιλαμβάνει πολλές εκδόσεις Python και πολλά τρίτα πακέτα Python. Μπορεί να περιλαμβάνει προ-κατασκευασμένες εκδόσεις της Python και πολλά πακέτα για παλαιότερες εκδόσεις του macOS.

Σημειώστε ότι οι διανομές ενδέχεται να μην περιλαμβάνουν τις τελευταίες εκδόσεις της Python ή άλλων βιβλιοθηκών και δεν υποστηρίζονται ή συντηρούνται από την κύρια ομάδα Python.

5.3. Installing additional Python packages

Ανατρέξτε στον Python Packaging User Guide για περισσότερες πληροφορίες.

5.4. GUI programming

Υπάρχουν πολλές επιλογές για την κατασκευή εφαρμογών GUI στον Mac με Python.

Η τυπική βιβλιοθήκη GUI Python είναι tkinter, βασισμένη στο διαλειτουργικό εργαλείο Tk (https://www.tcl.tk). Μια εγγενής έκδοση Tk macOS περιλαμβάνεται με τον εγκαταστάτη.

Το PyObjC είναι ένα Python binding στο πλαίσιο Objective-C/Cocoa της Apple. Πληροφορίες σχετικά με το PyObjC είναι διαθέσιμες από pyobjc.

Ένας αριθμός εναλλακτικών εργαλείων GUI macOS είναι διαθέσιμος, συμπεριλαμβανομένων:

  • PySide: Επίσημα Python bindings στο Qt GUI toolkit.

  • PyQt: Εναλλακτικά Python bindings στο Qt.

  • Kivy: Ένα διαλειτουργικό εργαλείο GUI που υποστηρίζει desktop και mobile πλατφόρμες.

  • Toga: Μέρος του BeeWare Project; υποστηρίζει εφαρμογές desktop, mobile, web και κονσόλας εφαρμογές.

  • wxPython: Ένα διαλειτουργικό εργαλείο που υποστηρίζει desktop πλατφόρμες.

5.5. Advanced topics

5.5.1. Installing free-threaded binaries

Added in version 3.13.

Άλλαξε στην έκδοση 3.15: Free-threading support is now installed by default.

The python.org Python for macOS installer package installs, by default, an additional build of Python 3.16 that supports free threading (running with the global interpreter lock disabled). Check the release page on python.org for possible updated information.

The free-threaded mode is working and continues to be improved, but there is some additional overhead in single-threaded workloads compared to the regular build. Additionally, third-party packages, in particular ones with an extension module, may not be ready for use in a free-threaded build, and will re-enable the GIL. As of Python 3.15, free-threading support is installed by default. It is packaged as a separate install option, which can be deselected by clicking the Customize button on the Installation Type step of the installer as described above.

../_images/mac_installer_09_custom_install_free_threaded.png

If the box next to the Free-threaded Python package name is checked (as it is by default), a separate PythonT.framework will also be installed alongside the normal Python.framework in /Library/Frameworks. This configuration allows a free-threaded Python 3.16 build to co-exist on your system with a traditional (GIL only) Python 3.16 build with minimal risk while installing or testing. This installation layout may change in future releases.

Γνωστές προφυλάξεις και περιορισμοί:

  • The UNIX command-line tools package, which is selected by default, will install links in /usr/local/bin for python3.16t, the free-threaded interpreter, and python3.16t-config, a configuration utility which may be useful for package builders. Since /usr/local/bin is typically included in your shell PATH, in most cases no changes to your PATH environment variable should be needed to use python3.16t.

  • Για αυτήν την έκδοση, το πακέτο Shell profile updater και το Update Shell Profile.command στο /Applications/Python 3.16/ δεν υποστηρίζουν το πακέτο ελεύθερης νηματοποίησης.

  • Η έκδοση ελεύθερης νηματοποίησης και η παραδοσιακή έκδοση έχουν ξεχωριστές διαδρομές αναζήτησης και ξεχωριστούς καταλόγους site-packages, οπότε, από προεπιλογή, εάν χρειάζεστε ένα πακέτο διαθέσιμο και στις δύο εκδόσεις, μπορεί να χρειαστεί να εγκατασταθεί και στις δύο. Το πακέτο ελεύθερης νηματοποίησης θα εγκαταστήσει μια ξεχωριστή έκδοση του pip για χρήση με python3.16t.

    • Για να εγκαταστήσετε ένα πακέτο χρησιμοποιώντας pip χωρίς venv:

      python3.16t -m pip install <package_name>
  • Όταν εργάζεστε με πολλές Python περιβάλλοντα, είναι συνήθως ασφαλέστερο και ευκολότερο να create and use virtual environments. Αυτό μπορεί να αποφύγει πιθανά ονόματα εντολών συγκρούσεων και σύγχυση σχετικά με το ποια Python είναι σε χρήση:

    python3.16t -m venv <venv_name>

    τότε activate.

  • Για να εκτελέσετε μια έκδοση ελεύθερης νηματοποίησης του IDLE:

    python3.16t -m idlelib
  • Οι ερμηνευτές και στις δύο εκδόσεις ανταγωνίζονται στις ίδιες PYTHON environment variables που μπορεί να έχουν απροσδόκητα αποτελέσματα, για παράδειγμα, εάν έχετε ρυθμίσει το PYTHONPATH σε ένα προφίλ κελύφους. Εάν είναι απαραίτητο, υπάρχουν command line options όπως -E για να αγνοήσετε αυτές τις μεταβλητές περιβάλλοντος.

  • Η έκδοση ελεύθερης νηματοποίησης συνδέεται με τις βιβλιοθήκες κοινής χρήσης τρίτων, όπως OpenSSL και Tk, που είναι εγκατεστημένες στο παραδοσιακό πλαίσιο. Αυτό σημαίνει ότι και οι δύο εκδόσεις μοιράζονται επίσης ένα σύνολο πιστοποιητικών εμπιστοσύνης όπως εγκαθίστανται από το Install Certificates.command script, επομένως χρειάζεται να εκτελείται μόνο μία φορά.

  • Εάν δεν μπορείτε να εξαρτηθείτε από το σύνδεσμο στο /usr/local/bin που δείχνει στην έκδοση python3.16t ελεύθερης νηματοποίησης (για παράδειγμα, εάν θέλετε να εγκαταστήσετε τη δική σας έκδοση εκεί ή κάποια άλλη διανομή το κάνει), μπορείτε να ορίσετε ρητά τη μεταβλητή περιβάλλοντος PATH του κελύφους σας για να περιλαμβάνει το κατάλογο bin του πλαισίου PythonT:

    export PATH="/Library/Frameworks/PythonT.framework/Versions/3.16/bin":"$PATH"

    Η παραδοσιακή εγκατάσταση πλαισίου από προεπιλογή κάνει κάτι παρόμοιο, εκτός από το Python.framework. Να είστε προσεκτικοί ότι η παρουσία και των δύο καταλόγων bin πλαισίου στο PATH μπορεί να οδηγήσει σε σύγχυση εάν υπάρχουν διπλά ονόματα όπως python3.16 και στις δύο∙ ποιο χρησιμοποιείται στην πραγματικότητα εξαρτάται από τη σειρά που εμφανίζονται στο PATH. Οι εντολές which python3.x ή which python3.xt μπορούν να δείξουν ποια διαδρομή χρησιμοποιείται. Η χρήση εικονικών περιβαλλόντων μπορεί να βοηθήσει στην αποφυγή τέτοιων αμφισημιών. Μια άλλη επιλογή μπορεί να είναι η δημιουργία ενός κελύφους alias στον επιθυμητό διερμηνέα, όπως:

    alias py3.16="/Library/Frameworks/Python.framework/Versions/3.16/bin/python3.16"
    alias py3.16t="/Library/Frameworks/PythonT.framework/Versions/3.16/bin/python3.16t"

5.5.2. Εγκατάσταση χρησιμοποιώντας τη γραμμή εντολών

If you want to use automation to install the python.org installer package (rather than by using the familiar macOS Installer GUI app), the macOS command line installer utility lets you select non-default options, too. If you are not familiar with installer, it can be somewhat cryptic (see man installer for more information). As an example, the following shell snippet shows one way to do it, using the 3.16.0b2 release and deselecting the free-threaded interpreter option:

RELEASE="python-3.160b2-macos11.pkg"

# download installer pkg
curl -O https://www.python.org/ftp/python/3.16.0/${RELEASE}

# create installer choicechanges to customize the install:
#    disable the PythonTFramework-3.16 package
#    while accepting the other defaults (install all other packages)
cat > ./choicechanges.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
        <dict>
                <key>attributeSetting</key>
                <integer>0</integer>
                <key>choiceAttribute</key>
                <string>selected</string>
                <key>choiceIdentifier</key>
                <string>org.python.Python.PythonTFramework-3.16</string>
        </dict>
</array>
</plist>
EOF

sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /

After a default install, you can test that both builds are available with something like:

$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled
$ /usr/local/bin/python3.16t -VV
Python 3.16.0b2 free-threading build (v3.16.0b2:3a83b172af, Jun  5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]
$ #    and the traditional interpreter
$ /usr/local/bin/python3.16 -VV
Python 3.16.0b2 (v3.16.0b2:3a83b172af, Jun  5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]
$ # test that they are also available without the prefix if /usr/local/bin is on $PATH
$ python3.16t -VV
Python 3.16.0b2 free-threading build (v3.16.0b2:3a83b172af, Jun  5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]
$ python3.16 -VV
Python 3.16.0b2 (v3.16.0b2:3a83b172af, Jun  5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]

Σημείωση

Τα τρέχοντα προγράμματα εγκατάστασης python.org εγκαθίστανται μόνο σε καθορισμένες τοποθεσίες όπως /Library/Frameworks/, /Applications και /usr/local/bin. Δεν μπορείτε να χρησιμοποιήσετε την επιλογή -domain του installer για να εγκαταστήσετε σε άλλες τοποθεσίες.

5.5.3. Distributing Python applications

Υπάρχει μια σειρά εργαλείων για τη μετατροπή του κώδικα Python σας σε μια αυτόνομη διανεμόμενη εφαρμογή:

  • py2app: Υποστηρίζει τη δημιουργία macOS .app πακέτων από ένα έργο Python.

  • Briefcase: Μέρος του BeeWare Project; ένα εργαλείο διανομής πολλαπλών πλατφορμών που υποστηρίζει τη δημιουργία .app πακέτων σε macOS, καθώς και τη διαχείριση υπογραφής και πιστοποίησης.

  • PyInstaller: Ένα εργαλείο διανομής πολλαπλών πλατφορμών που δημιουργεί ένα μόνο αρχείο ή φάκελο ως διανεμόμενο αντικείμενο.

5.5.4. App Store compliance

Οι εφαρμογές που υποβάλλονται για διανομή μέσω του macOS App Store πρέπει να περάσουν τη διαδικασία αναθεώρησης εφαρμογών της Apple. Αυτή η διαδικασία περιλαμβάνει ένα σύνολο αυτοματοποιημένων κανόνων επικύρωσης που ελέγχουν το υποβληθέν πακέτο εφαρμογής για προβληματικό κώδικα.

Η βιβλιοθήκη προτύπων Python περιέχει κάποιον κώδικα που είναι γνωστό ότι παραβιάζει αυτούς τους αυτοματοποιημένους κανόνες. Ενώ αυτές οι παραβιάσεις φαίνεται να είναι ψευδώς θετικές, οι κανόνες αναθεώρησης της Apple δεν μπορούν να αμφισβητηθούν. Επομένως, είναι απαραίτητο να τροποποιηθεί η βιβλιοθήκη προτύπων Python για να περάσει μια εφαρμογή την αναθεώρηση του App Store.

Το δέντρο πηγών Python περιέχει ένα αρχείο patch που θα αφαιρέσει όλο τον κώδικα που είναι γνωστό ότι προκαλεί προβλήματα με τη διαδικασία αναθεώρησης του App Store. Αυτή η επιδιόρθωση εφαρμόζεται αυτόματα όταν η CPython διαμορφώνεται με την --with-app-store-compliance επιλογή.

Αυτή η επιδιόρθωση δεν απαιτείται κανονικά για τη χρήση της CPython σε Mac. Ούτε απαιτείται εάν διανέμετε μια εφαρμογή εκτός του macOS App Store. Απαιτείται μόνο εάν χρησιμοποιείτε το macOS App Store ως κανάλι διανομής.

5.6. Other resources

Η python.org Help page έχει συνδέσμους σε πολλούς χρήσιμους πόρους. Η Pythonmac-SIG mailing list είναι ένας άλλος πόρος υποστήριξης ειδικά για χρήστες και προγραμματιστές Python στο Mac.