# 4. Χρησιμοποιώντας Python στα Windows

Αυτό το έγγραφο στοχεύει να δώσει μια επισκόπηση της συμπεριφοράς των Windows που πρέπει να γνωρίζετε, όταν χρησιμοποιείτε την Python στα Microsoft Windows.

Σε αντίθεση με τα περισσότερα συστήματα και υπηρεσίες Unix, τα Windows δεν περιλαμβάνουν ενσωματωμένη εγκατάσταση Python που υποστηρίζεται από το σύστημα. Για να είναι διαθέσιμη η Python, η ομάδα της CPython έχει μεταγλωττίσει προγράμματα εγκατάστασης των Windows με κάθε έκδοση για πολλά χρόνια. Αυτά τα προγράμματα εγκατάστασης προορίζονται κυρίως για την προσθήκη μιας εγκατάστασης της Python ανά χρήστη, με τον βασικό διερμηνέα και τη βιβλιοθήκη να χρησιμοποιούνται από έναν μόνο χρήστη. Το πρόγραμμα εγκατάστασης είναι, επίσης σε θέση να εγκαταστήσει για όλους τους χρήστες ενός μεμονωμένου μηχανήματος και ένα ξεχωριστό αρχείο ZIP που είναι διαθέσιμο για τοπικές διανομές εφαρμογής.

Όπως ορίζεται στο PEP 11, μια έκδοση Python υποστηρίζει μόνο μια πλατφόρμα Windows, ενώ η Microsoft θεωρεί την πλατφόρμα υπό εκτεταμένη υποστήριξη. Αυτό σημαίνει ότι η Python 3.11 υποστηρίζει Windows 8.1 και νεότερες εκδόσεις. Εάν χρειάζεστε υποστήριξη Windows 7, εγκαταστήστε την Python 3.8.

Υπάρχει ένας αριθμός διαφορετικών προγραμμάτων εγκατάστασης διαθέσιμα για Windows, το καθένα με ορισμένα πλεονεκτήματα και μειονεκτήματα.

Το Το πλήρες πρόγραμμα εγκατάστασης περιέχει όλα τα στοιχεία και είναι η καλύτερη επιλογή για προγραμματιστές που χρησιμοποιούν Python για κάθε είδους έργο.

Το Το πακέτο Microsoft Store είναι μια απλή εγκατάσταση της Python που είναι κατάλληλη για εκτέλεση scripts και πακέτων, και χρήση IDLE ή άλλων περιβαλλόντων ανάπτυξης. Απαιτεί Windows 10 και νεότερη έκδοση, αλλά μπορεί να εγκατασταθεί με ασφάλεια χωρίς να καταστρέψει άλλα προγράμματα. Παρέχει επίσης πολλές βολικές εντολές για την εκκίνηση της Python και των εργαλείων της.

Το Τα πακέτα nuget.org είναι ελαφριές εγκαταστάσεις που προορίζονται για συστήματα συνεχούς ενοποίησης. Μπορεί να χρησιμοποιηθεί για τη δημιουργία πακέτων Python ή την εκτέλεση scripts, αλλά δεν μπορεί να ενημερωθεί και δεν διαθέτει εργαλεία διεπαφής χρήστη.

Το Το ενσωματωμένο πακέτο είναι ένα ελάχιστο πακέτο Python κατάλληλο για ενσωμάτωση σε μεγαλύτερη εφαρμογή.

## 4.1. Το πλήρες πρόγραμμα εγκατάστασης

### 4.1.1. Βήματα Εγκατάστασης

Τέσσερα προγράμματα εγκατάστασης Python 3.11 είναι διαθέσιμα για λήψη - δύο το καθένα για τις εκδόσεις 32-bit και 64-bit του διερμηνέα. Το πρόγραμμα εγκατάστασης web είναι μια αρχική λήψη και θα πραγματοποιήσει αυτόματα λήψη των απαιτούμενων στοιχείων, όπως απαιτείται. Το πρόγραμμα εγκατάστασης εκτός σύνδεσης περιλαμβάνει τα στοιχεία που είναι απαραίτητα για μια προεπιλεγμένη εγκατάσταση και απαιτεί μόνο σύνδεση στο διαδίκτυο για προαιρετικές λειτουργίες. Δείτε το Εγκατάσταση χωρίς λήψη για άλλους τρόπους αποφυγής λήψης κατά την εγκατάσταση.

Μετά την εκκίνηση του προγράμματος εγκατάστασης, μπορεί να επιλέγει μία από τις δύο επιλογές:

Εάν επιλέξετε «Install Now»:

- Δεν θα χρειάζεται να είστε διαχειριστής (εκτός εάν απαιτείται ενημέρωση συστήματος για τη Βιβλιοθήκη C Runtime ή εγκαταστήσετε το Το πρόγραμμα εκκίνησης Python για Windows για όλους τους χρήστες)

- Η Python θα εγκατασταθεί στον κατάλογο του χρήστη σας

- Το Το πρόγραμμα εκκίνησης Python για Windows θα εγκατασταθεί σύμφωνα με την επιλογή στο κάτω μέρος της πρώτης σελίδας

- Θα εγκατασταθεί η τυπική βιβλιοθήκη, η δοκιμαστική σουίτα, ο εκκινητής και το pip

- Εάν επιλεγεί, ο κατάλογος εγκατάστασης θα προστεθεί στο `PATH` σας

- Οι συντομεύσεις θα είναι ορατές μόνο για τον τρέχοντα χρήστη

Επιλέγοντας «Customize installation» θα σας επιτρέψει να επιλέξετε τις λειτουργίες προς εγκατάσταση, τη θέση εγκατάστασης και άλλες επιλογές ή ενέργειες μετά την εγκατάσταση. Για να εγκαταστήσετε σύμβολα εντοπισμού σφαλμάτων ή δυαδικά αρχεία, θα χρειαστεί να χρησιμοποιήσετε αυτήν την επιλογή.

Για να εκτελέσετε μια εγκατάσταση για όλους τους χρήστες, θα πρέπει να επιλέξετε «Customize installation». Σε αυτήν την περίπτωση:

- Ενδέχεται να σας ζητηθεί να παρέχετε διαπιστευτήρια διαχείρισης ή έγκριση

- Η Python θα εγκατασταθεί στον κατάλογο Program Files

- Το Το πρόγραμμα εκκίνησης Python για Windows θα εγκατασταθεί στον κατάλογο των Windows

- Προαιρετικά χαρακτηριστικά μπορούν να επιλεγούν κατά την εγκατάσταση

- Η τυπική βιβλιοθήκη μπορεί να προ-μεταγλωττιστεί σε bytecode

- Εάν επιλεγεί, ο κατάλογος εγκατάστασης θα προστεθεί στο σύστημα `PATH`

- Οι συντομεύσεις είναι διαθέσιμες για όλους τους χρήστες

### 4.1.2. Κατάργηση του περιορισμού MAX_PATH

Τα Windows έχουν ιστορικά περιορισμένα μήκη διαδρομής στους 260 χαρακτήρες. Αυτό σήμαινε ότι διαδρομές μεγαλύτερες από αυτό δεν θα επιλύονταν και θα προέκυπταν σφάλματα.

Στις πιο πρόσφατες εκδόσεις των Windows, αυτός ο περιορισμός μπορεί να επεκταθεί σε περίπου 32.000 χαρακτήρες. Ο διαχειριστής σας θα πρέπει να ενεργοποιήσει την πολιτική ομάδας «Enable Win32 long paths», ή να ορίσει `LongPathsEnabled` σε `1` το κλειδί μητρώου `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.

Αυτό επιτρέπει στη συνάρτηση `open()`, στο module `os` και στις περισσότερες άλλες λειτουργίες διαδρομής να αποδέχονται και να επιστρέφουν διαδρομές μεγαλύτερες από 260 χαρακτήρες.

Μετά την αλλαγή της παραπάνω επιλογής, δεν απαιτείται περαιτέρω διαμόρφωση.

Άλλαξε στην έκδοση 3.6: Η υποστήριξη για μεγάλες διαδρομές ήταν ενεργοποιημένη στην Python.

### 4.1.3. Εγκατάσταση χωρίς περιβάλλον διεπαφής χρήστη

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

To completely hide the installer UI and install Python silently, pass the `/quiet` option. To skip past the user interaction but still display progress and errors, pass the `/passive` option. The `/uninstall` option may be passed to immediately begin removing Python - no confirmation prompt will be displayed.

Όλες οι άλλες επιλογές μεταβιβάζονται ως `name=value`, όπου η τιμή είναι συνήθως `0` για να απενεργοποιήσετε ένα χαρακτηριστικό, `1` για να ενεργοποιήσετε ένα χαρακτηριστικό ή μια διαδρομή. Η πλήρης λίστα των διαθέσιμων επιλογών φαίνεται παρακάτω.

Όνομα | Περιγραφή | Προεπιλογή
--- | --- | ---
InstallAllUsers | Εκτέλεση εγκατάστασης σε όλο το σύστημα. | 0
TargetDir | Ο κατάλογος εγκατάστασης | Επιλέχθηκε με βάση το InstallAllUsers
DefaultAllUsersTargetDir | Ο προεπιλεγμένος κατάλογος εγκατάστασης για τις εγκαταστάσεις όλων των χρηστών | `%ProgramFiles%\Python X.Y` ή `%ProgramFiles(x86)%\Python X.Y`
DefaultJustForMeTargetDir | Ο προεπιλεγμένος κατάλογος εγκατάστασης για εξατομικευμένες εγκαταστάσεις | `%LocalAppData%\Programs\Python\PythonXY` ή `%LocalAppData%\Programs\Python\PythonXY-32` ή `%LocalAppData%\Programs\Python\PythonXY-64`
DefaultCustomTargetDir | Ο προεπιλεγμένος κατάλογος προσαρμοσμένης εγκατάστασης που εμφανίζεται στο UI | (empty)
AssociateFiles | Δημιουργήστε συσχετίσεις αρχείων εάν είναι επίσης εγκατεστημένο το πρόγραμμα εκκίνησης. | 1
CompileAll | Μεταγλώττιση όλων των αρχείων `.py` σε `.pyc`. | 0
PrependPath | Προετοιμάστε τους καταλόγους εγκατάστασης και Scripts στο `PATH` και προσθέστε το `.PY` στο `PATHEXT` | 0
AppendPath | Προσθήκη καταλόγων εγκατάστασης και Scripts σε `PATH` και προσθήκη `.PY` σε `PATHEXT` | 0
Συντομεύσεις | Δημιουργήστε συντομεύσεις για τον διερμηνέα, την τεκμηρίωση και το IDLE εάν είναι εγκατεστημένα. | 1
Include_doc | Εγκαταστήστε το εγχειρίδιο της Python | 1
Include_debug | Εγκαταστήστε δυαδικά αρχεία εντοπισμού σφαλμάτων | 0
Include_dev | Εγκατάσταση κεφαλίδων και βιβλιοθηκών προγραμματιστή. Η παράλειψη αυτού μπορεί να οδηγήσει σε μη χρησιμοποιήσιμη εγκατάσταση. | 1
Include_exe | Εγκατάσταση `python.exe` και σχετικών αρχείων. Η παράλειψη αυτού μπορεί να οδηγήσει σε μη χρησιμοποιήσιμη εγκατάσταση. | 1
Include_launcher | Εγκαταστήστε το Το πρόγραμμα εκκίνησης Python για Windows. | 1
InstallLauncherAllUsers | Εγκαθιστά το πρόγραμμα εκκίνησης για όλους του χρήστες. Επίσης, απαιτείται η ρύθμιση `Include_launcher` να τεθεί σε 1 | 1
Include_lib | Εγκαταστήστε τυπικά module βιβλιοθήκης και επέκτασης. Η παράλειψη αυτού μπορεί να οδηγήσει σε μη χρησιμοποιήσιμη εγκατάσταση. | 1
Include_pip | Εγκαταστήστε το πακέτο pip και setuptools | 1
Include_symbols | Εγκατάσταση συμβόλων εντοπισμού σφαλμάτων (`*.pdb`) | 0
Include_tcltk | Εγκατάσταση υποστήριξης Tcl/Tk και IDLE | 1
Include_test | Εγκαταστήστε την τυπική σουίτα δοκιμών βιβλιοθήκης | 1
Include_tools | Εγκαταστήστε βοηθητικά scripts | 1
LauncherOnly | Εγκαθιστά μόνο το πρόγραμμα εκκίνησης. Αυτό θα παρακάμψει τις περισσότερες άλλες επιλογές. | 0
SimpleInstall | Απενεργοποιήστε τις περισσότερες διεπαφές εγκατάστασης | 0
SimpleInstallDescription | Ένα προσαρμοσμένο μήνυμα που θα εμφανίζεται όταν χρησιμοποιείται το απλοποιημένο περιβάλλον διεπαφής χρήστη. | (empty)

Για παράδειγμα, για να εγκαταστήσετε αθόρυβα μια προεπιλεγμένη εγκατάσταση Python σε όλο το σύστημα, θα μπορούσατε να χρησιμοποιήσετε την ακόλουθη εντολή (από μια ανυψωμένη γραμμή εντολών):

    python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0

Για να επιτρέψετε στους χρήστες να εγκαταστήσουν εύκολα ένα προσωπικό αντίγραφο της Python χωρίς τη δοκιμαστική σουίτα, θα μπορούσατε να παρέχετε μια συντόμευση με την ακόλουθη εντολή. Αυτή θα εμφανίσει μια απλοποιημένη αρχική σελίδα και θα απαγορεύσει την προσαρμογή:

    python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0
        SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite."

(Λάβετε υπόψη ότι η παράλειψη της εφαρμογής εκκίνησης παραλείπει επίσης συσχετίσεις αρχείων και συνίσταται μόνο για εγκαταστάσεις ανά χρήστη όταν υπάρχει επίσης εγκατάσταση σε όλο το σύστημα που περιλάμβανε τη λειτουργία εκκίνησης.)

Οι επιλογές που αναφέρονται παραπάνω μπορούν επίσης να παρέχονται σε ένα αρχείο με το όνομα `unattend.xml` δίπλα στο εκτελέσιμο αρχείο. Αυτό το αρχείο καθορίζει μια λίστα επιλογών και τιμών. Όταν μια τιμή παρέχεται ως χαρακτηριστικό, θα μετατραπεί σε αριθμό εάν είναι δυνατόν. Οι τιμές που παρέχονται ως κείμενο στοιχείου παραμένουν πάντα ως συμβολοσειρές. Αυτό το αρχείο παραδείγματος ορίζει τις ίδιες επιλογές με το προηγούμενο παράδειγμα:

    <Options>
        <Option Name="InstallAllUsers" Value="no" />
        <Option Name="Include_launcher" Value="0" />
        <Option Name="Include_test" Value="no" />
        <Option Name="SimpleInstall" Value="yes" />
        <Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
    </Options>

### 4.1.4. Εγκατάσταση χωρίς λήψη

Καθώς ορισμένες δυνατότητες της Python δεν περιλαμβάνονται στην αρχική λήψη του προγράμματος εγκατάστασης, η επιλογή αυτών των δυνατοτήτων ενδέχεται να απαιτεί σύνδεση στο διαδίκτυο. Για να αποφευχθεί αυτή η ανάγκη, όλα τα πιθανά στοιχεία μπορούν να ληφθούν κατ” απαίτηση για να δημιουργηθεί μια πλήρης διάταξη που δεν θα απαιτεί πλέον μια σύνδεση στο Διαδίκτυο, ανεξάρτητα από τις επιλεγμένες δυνατότητες. Λάβετε υπόψη ότι αυτή η λήψη μπορεί να είναι μεγαλύτερη από την απαιτούμενη, αλλά όπου πρόκειται να πραγματοποιηθεί μεγάλος αριθμός εγκαταστάσεων, είναι πολύ χρήσιμο να έχετε ένα αντίγραφο προσωρινής αποθήκευσης.

Εκτελέστε την ακόλουθη εντολή από τη Γραμμή Εντολών για λήψη όλων των πιθανών απαιτούμενων αρχείων. Θυμηθείτε να αντικαταστήσετε το `python-3.9.0.exe` για το πραγματικό όνομα του προγράμματος εγκατάστασης και να δημιουργήσετε διατάξεις στους δικούς τους καταλόγους για να αποφύγετε συγκρούσεις μεταξύ αρχείων με το ίδιο όνομα.

    python-3.9.0.exe /layout [optional target directory]

Μπορείτε επίσης να καθορίσετε την επιλογή `/quiet` για απόκρυψη της εμφάνισης προόδου.

### 4.1.5. Τροποποίηση εγκατάστασης

Μόλις εγκατασταθεί η Python, μπορείτε να προσθέσετε ή να αφαιρέσετε λειτουργίες μέσω του εργαλείου Προγράμματα και Δυνατότητες που είναι μέρος των Windows. Επιλέξτε την καταχώρηση Python και επιλέξτε «Κατάργηση εγκατάστασης/Αλλαγή» για να ανοίξετε το πρόγραμμα εγκατάστασης σε λειτουργία συντήρησης.

Η «Αλλαγή» σάς επιτρέπει να προσθέτετε ή να αφαιρείτε λειτουργίες τροποποιώντας τα πλαίσια ελέγχου - τα αμετάβλητα πλαίσια ελέγχου δεν θα εγκαταστήσουν ή θα αφαιρέσουν τίποτα. Ορισμένες επιλογές δεν μπορούν να αλλάξουν σε αυτήν τη λειτουργία, όπως ο κατάλογος εγκατάστασης· για να τις τροποποιήσετε, θα χρειαστεί αν αφαιρέσετε και, στη συνέχεια να επανεγκαταστήσετε ξανά την Python.

Η «Επιδιόρθωση» θα επαληθεύσει όλα τα αρχεία που πρέπει να εγκατασταθούν χρησιμοποιώντας τις τρέχουσες ρυθμίσεις και θα αντικαταστήσει όσα έχουν αφαιρεθεί ή τροποποιηθεί.

Η «Κατάργηση εγκατάστασης» θα καταργήσει πλήρως την Python, με εξαίρεση το Το πρόγραμμα εκκίνησης Python για Windows, το οποίο έχει τη δική του καταχώριση στο Προγράμματα και Δυνατότητες.

## 4.2. Το πακέτο Microsoft Store

Νέο στην έκδοση 3.7.2.

Το πακέτο Microsoft Store είναι ένας εύκολα εγκαταστημένος διερμηνέας Python που προορίζεται κυρίως για διαδραστική χρήση για παράδειγμα, από μαθητές.

Για να εγκαταστήσετε το πακέτο, βεβαιωθείτε ότι έχετε τις πιο πρόσφατες ενημερώσεις των Windows 10 και πραγματοποιήστε αναζήτηση στην εφαρμογή Microsoft Store για «Python 3.11». Βεβαιωθείτε ότι η εφαρμογή που επιλέγετε έχει δημοσιευτεί από το Python Software Foundation, και εγκαταστήστε την.

Προειδοποίηση

Η Python θα είναι πάντα διαθέσιμη δωρεάν στο Microsoft Store. Εάν σας ζητηθεί να πληρώσετε για αυτό, δεν έχετε επιλέξει το σωστό πακέτο.

Μετά την εγκατάσταση, η Python μπορεί να εκκινηθεί βρίσκοντας την στην Έναρξη. Εναλλακτικά, θα είναι διαθέσιμη από οποιαδήποτε περίοδο λειτουργίας της Γραμμής Εντολών ή PowerShell, πληκτρολογώντας `python`. Επιπλέον, το pip και το IDLE μπορούν να χρησιμοποιηθούν πληκτρολογώντας `pip` ή `idle`. Το IDLE μπορεί επίσης να βρεθεί στην Έναρξη.

Και οι τρεις εντολές είναι επίσης διαθέσιμες με επιθήματα αριθμού έκδοσης, για παράδειγμα, ως `python3.exe` και `python3.x.exe` καθώς και το `python.exe` (όπου `3.x` είναι η συγκεκριμένη έκδοση που θέλετε να εκκινήσετε, όπως 3.11). Ανοίξτε «Διαχείριση Ψευδωνύμων Εκτέλεσης Εφαρμογών» μέσω της Έναρξης για να επιλέξετε ποια έκδοση της Python σχετίζεται με κάθε εντολή. Συνίσταται να βεβαιωθείτε ότι τα `pip` και `idle` είναι είναι συμβατά με οποιαδήποτε έκδοση της `python` έχει επιλεγεί.

Τα εικονικά περιβάλλοντα μπορούν να δημιουργηθούν με το `python -m venv` και να ενεργοποιηθούν και να χρησιμοποιηθούν κανονικά.

Εάν έχετε εγκαταστήσει μια άλλη έκδοση της Python και την προσθέσατε στη μεταβλητή `PATH` σας, θα είναι διαθέσιμη ως `python.exe` και όχι ως αυτή από το Microsoft Store. Για πρόσβαση στη νέα εγκατάσταση, χρησιμοποιήστε το `python3.exe` ή `python3.x.exe`.

Η εφαρμογή εκκίνησης `py.exe` θα εντοπίσει αυτήν την εγκατάσταση Python, αλλά θα προτιμήσει εγκαταστάσεις από το παραδοσιακό πρόγραμμα εγκατάστασης.

Για να καταργήσετε την Python, ανοίξτε τις Ρυθμίσεις και χρησιμοποιήστε τις Εφαρμογές και δυνατότητες, ή βρείτε την Python στην Έναρξη και κάντε δεξί κλικ για να επιλέξετε Κατάργηση εγκατάστασης. Η απεγκατάσταση θα καταργήσει όλα τα πακέτα που εγκαταστήσατε απευθείας σε αυτήν την εγκατάσταση Python, αλλά δεν θα καταργήσει κανένα εικονικό περιβάλλον.

### 4.2.1. Γνωστά θέματα

#### 4.2.1.1. Ανακατεύθυνση τοπικών δεδομένων, μητρώου, και προσωρινών διαδρομών

Λόγω περιορισμών στις εφαρμογές του Microsoft Store, τα Python scripts ενδέχεται να μην έχουν πλήρη πρόσβαση εγγραφής σε κοινόχρηστες τοποθεσίες όπως `TEMP` και το μητρώο. Αντίθετα, θα γράψει σε ένα ιδιωτικό αντίγραφο. Εάν τα scripts σας πρέπει να τροποποιήσουν τις κοινόχρηστες τοποθεσίες, θα χρειαστεί να εγκαταστήσετε το πλήρες πρόγραμμα εγκατάστασης.

Κατά την εκτέλεση, η Python θα χρησιμοποιήσει ένα ιδιωτικό αντίγραφο γνωστών φακέλων των Windows και του μητρώου. Για παράδειγμα, εάν η μεταβλητή περιβάλλοντος `%APPDATA%` είναι `c:\Users\<user>\AppData\`, τότε όταν γράφεται σε `C:\Users\<user>\AppData\Local` θα γραφεί σε `C:\Users\<user>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local\`.

Κατά την ανάγνωση αρχείων, τα Windows θα επιστρέψουν το αρχείο από τον ιδιωτικό φάκελο ή αν δεν υπάρχει, τον πραγματικό κατάλογο των Windows. Για παράδειγμα, η ανάγνωση του `C:\Windows\System32` επιστρέφει τα περιεχόμενα του `C:\Windows\System32` συν τα περιεχόμενα του `C:\Program Files\WindowsApps\package_name\VFS\SystemX86`.

Μπορείτε να βρείτε την πραγματική διαδρομή οποιουδήποτε υπάρχοντος αρχείου χρησιμοποιώντας `os.path.realpath()`:

    >>> import os
    >>> test_file = 'C:\\Users\\example\\AppData\\Local\\test.txt'
    >>> os.path.realpath(test_file)
    'C:\\Users\\example\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\Local\\test.txt'

Κατά την εγγραφή στο μητρώο των Windows, υπάρχουν οι ακόλουθες συμπεριφορές:

- Η ανάγνωση από το `HKLM\\Software` επιτρέπεται και τα αποτελέσματα συγχωνεύονται με το αρχείο `registry.dat` στο πακέτο.

- Η εγγραφή στο `HKLM\\Software` δεν επιτρέπεται εάν υπάρχει το αντίστοιχο κλειδί/τιμή, π.χ. τροποποίηση υπαρχόντων κλειδιών.

- Η εγγραφή στο `HKLM\\Software` επιτρέπει εφόσον δεν υπάρχει αντίστοιχο κλειδί/τιμή στο πακέτο και ο χρήστης έχει τα σωστά δικαιώματα πρόσβασης.

For more detail on the technical basis for these limitations, please consult Microsoft’s documentation on packaged full-trust apps, currently available at docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenes

## 4.3. Τα πακέτα nuget.org

Νέο στην έκδοση 3.5.2.

Το πακέτο nuget.org είναι ένα περιβάλλον Python μειωμένου μεγέθους που προορίζεται για χρήση σε συνεχή ενοποίηση και δημιουργία συστημάτων που δεν έχουν εγκατάσταση Python. Ενώ το nuget είναι «ο διαχειριστής πακέτων για .NET», λειτουργεί επίσης τέλεια για πακέτα που περιέχουν εργαλεία χρόνου κατασκευής.

Επισκεφτείτε το nuget.org για τις πιο ενημερωμένες πληροφορίες σχετικά με τη χρήση του nuget. Αυτό που ακολουθεί είναι μια περίληψη που είναι επαρκής για προγραμματιστές Python.

Το εργαλείο γραμμής εντολών `nuget.exe` μπορεί να ληφθεί απευθείας από το `https://aka.ms/nugetclidl`, για παράδειγμα, χρησιμοποιώντας curl ή PowerShell. Με το εργαλείο, η πιο πρόσφατη έκδοση της Python για μηχανήματα 64-bit ή 32-bit εγκαθίστανται χρησιμοποιώντας:

    nuget.exe install python -ExcludeVersion -OutputDirectory .
    nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .

Για να επιλέξετε μια συγκεκριμένη έκδοση, προσθέστε ένα `-Version 3.x.y`. Ο κατάλογος εξόδου μπορεί να αλλάξει από `.`, και το πακέτο να εγκατασταθεί σε έναν υποκατάλογο. Από προεπιλογή, ο υποκατάλογος ονομάζεται όπως και το πακέτο, και χωρίς την επιλογή `-ExcludeVersion`, αυτό το όνομα θα περιλαμβάνει τη συγκεκριμένη έκδοση που έχει εγκατασταθεί. Μέσα στον υποκατάλογο υπάρχει ένας κατάλογος `tools` που περιέχει την εγκατάσταση Python:

    # Without -ExcludeVersion
    > .\python.3.5.2\tools\python.exe -V
    Python 3.5.2

    # With -ExcludeVersion
    > .\python\tools\python.exe -V
    Python 3.5.2

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

Δίπλα στον κατάλογο `tools` υπάρχει ένας κατάλογος `build\native`. Αυτός περιέχει ένα αρχείο ιδιοτήτων MSBuild `python.props` που μπορεί να χρησιμοποιηθεί σε ένα έργο C++ για αναφορά στην εγκατάσταση της Python. Η συμπερίληψη των ρυθμίσεων θα χρησιμοποιεί αυτόματα τις κεφαλίδες και θα εισάγει βιβλιοθήκες στο build σας.

Οι σελίδες πληροφοριών πακέτου στο nuget.org είναι www.nuget.org/packages/python για την έκδοση 64-bit και www.nuget.org/packages/pythonx86 για την έκδοση 32-bit.

## 4.4. Το ενσωματωμένο πακέτο

Νέο στην έκδοση 3.5.

Η ενσωματωμένη διανομή είναι ένα αρχείο ZIP που περιέχει ένα ελάχιστο περιβάλλον Python. Προορίζεται για δράση ως μέρος μιας άλλης εφαρμογής, αντί να έχει άμεση πρόσβαση από τους τελικούς χρήστες.

Όταν εξάγεται, η ενσωματωμένη διανομή απομονώνεται (σχεδόν) πλήρως από το σύστημα του χρήστη, συμπεριλαμβανομένων μεταβλητών περιβάλλοντος, ρυθμίσεων μητρώου συστήματος και εγκατεστημένων πακέτων. Η τυπική βιβλιοθήκη περιλαμβάνεται ως προ-μεταγλωττισμένα και βελτιστοποιημένα αρχεία `.pyc` σε ένα ZIP και `python3.dll`, `python37.dll`, `python.exe` και `pythonw.exe` παρέχονται όλα. Το Tcl/tk (συμπεριλαμβανομένων όλων των εξαρτημένων, όπως το Idle), το pip και η τεκμηρίωση Python δεν συμπεριλαμβάνονται.

Σημείωση

The embedded distribution does not include the Microsoft C Runtime and it is the responsibility of the application installer to provide this. The runtime may have already been installed on a user’s system previously or automatically via Windows Update, and can be detected by finding `ucrtbase.dll` in the system directory.

Τα πακέτα τρίτων θα πρέπει να εγκατασταθούν από το πρόγραμμα εγκατάστασης της εφαρμογής παράλληλα με την ενσωματωμένη διανομή. Η χρήση pip για τη διαχείριση εξαρτήσεων όπως για μια κανονική εγκατάσταση Python δεν υποστηρίζεται με αυτήν τη διανομή, αν και με λίγη προσοχή μπορεί να είναι δυνατό, να συμπεριληφθεί και να χρησιμοποιηθεί το pip για αυτόματες ενημερώσεις. Γενικά, τα πακέτα τρίτων θα πρέπει να αντιμετωπίζονται ως μέρος της εφαρμογής («vendoring»), έτσι ώστε ο προγραμματιστής να μπορεί να διασφαλίσει τη συμβατότητα με νεότερες εκδόσεις προτού παρέχει ενημερώσεις στους χρήστες.

Οι δύο προτεινόμενες περιπτώσεις χρήσης για αυτήν τη διανομή περιγράφονται παρακάτω.

### 4.4.1. Εφαρμογή Python

Μια εφαρμογή γραμμένη σε Python δεν απαιτεί απαραίτητα από τους χρήστες να γνωρίζουν αυτό το γεγονός. Η ενσωματωμένη διανομή μπορεί να χρησιμοποιηθεί σε αυτήν την περίπτωση για να συμπεριλάβει μια ιδιωτική έκδοση της Python σε ένα πακέτο εγκατάστασης. Ανάλογα με το πόσο διαφανές θα πρέπει να είναι (ή αντίστροφα, πόσο επαγγελματικό θα έπρεπε να φαίνεται), υπάρχουν δύο επιλογές.

Η χρήση ενός εξειδικευμένου εκτελέσιμου ως προγράμματος εκκίνησης απαιτεί κάποια κωδικοποίηση, αλλά παρέχει την πιο διαφανής εμπειρία για τους χρήστες. Με έναν προσαρμοσμένο πρόγραμμα εκκίνησης, δεν υπάρχουν προφανείς ενδείξεις ότι το πρόγραμμα εκτελείται σε Python: τα εικονίδια μπορούν να προσαρμοστούν, οι πληροφορίες εταιρείας και έκδοσης μπορούν να καθορίζεται και οι συσχετισμοί αρχείων συμπεριφέρονται σωστά. Στις περισσότερες περιπτώσεις, ένα προσαρμοσμένο πρόγραμμα εκκίνησης θα πρέπει απλώς να μην μπορεί να καλεί το `Py_Main` με μια σκληρά κωδικοποιημένη γραμμή εντολών.

Η απλούστερη προσέγγιση είναι να παρέχετε ένα αρχείο δέσμης ή μια συντόμευση που δημιουργείται που καλεί απευθείας το `python.exe` ή το `pythonw.exe` με τα απαιτούμενα ορίσματα γραμμής εντολών. Σε αυτήν την περίπτωση, η εφαρμογή φαίνεται να είναι Python και όχι το πραγματικό της όνομα, και οι χρήστες μπορεί να έχουν πρόβλημα να το ξεχωρίσουν από άλλες διεργασίες Python που εκτελούνται ή συσχετίσεις αρχείων.

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

### 4.4.2. Ενσωμάτωση Python

Οι εφαρμογές που είναι γραμμένες σε εγγενή κώδικα απαιτούν συχνά κάποια μορφή scripting γλώσσας και η ενσωματωμένη διανομή Python μπορεί να χρησιμοποιηθεί για αυτόν τον σκοπό. Γενικά, η πλειονότητα της εφαρμογής είναι σε εγγενή κώδικα και κάποιο μέρος είτε θα καλέσει το `python.exe` ή θα χρησιμοποιήσει απευθείας το `python3.dll`. Και στις δύο περιπτώσεις, η εξαγωγή της ενσωματωμένης διανομής σε έναν υποκατάλογο της εγκατάστασης της εφαρμογής αρκεί για να παρέχει έναν διερμηνέα Python με δυνατότητα φόρτωσης.

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

## 4.5. Εναλλακτικά πακέτα

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

ActivePython

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

Anaconda

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

Enthought Deployment Manager

  «Η επόμενη γενικά Διαχειριστή Περιβάλλοντος και Πακέτων Python».

  Προηγουμένως, η Enthought παρείχε το Canopy, αλλά έφτασε στο τέλος της ζωής του το 2016.

WinPython

  Διανομή ειδικά για Windows με προκατασκευασμένα επιστημονικά πακέτα και εργαλεία για την κατασκευή πακέτων.

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

## 4.6. Διαμόρφωση Python

Για να εκτελέσετε εύκολα την Python από μια γραμμή εντολών, μπορείτε να εξετάσετε το ενδεχόμενο να αλλάξετε ορισμένες προεπιλεγμένες μεταβλητές περιβάλλοντός στα Windows. Ενώ το πρόγραμμα εγκατάστασης παρέχει μια επιλογή για τη διαμόρφωση των μεταβλητών PATH και PATHTEXT για εσάς, αυτή είναι αξιόπιστη μόνο για μια μεμονωμένη εγκατάσταση σε όλο το σύστημα. Εάν χρησιμοποιείτε τακτικά πολλές εκδόσεις της Python, σκεφτείτε να χρησιμοποιήσετε το Το πρόγραμμα εκκίνησης Python για Windows.

### 4.6.1. Excursus: Ρύθμιση μεταβλητών περιβάλλοντος

Τα Windows επιτρέπουν τη μόνιμη διαμόρφωση των μεταβλητών περιβάλλοντος τόσο σε επίπεδο χρήστη όσο και σε επίπεδο συστήματος ή προσωρινά σε μια γραμμή εντολών.

Για να ορίσετε προσωρινά μεταβλητές περιβάλλοντος, ανοίξτε τη γραμμή εντολών και χρησιμοποιήστε την εντολή set:

    C:\>set PATH=C:\Program Files\Python 3.9;%PATH%
    C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
    C:\>python

Αυτές οι αλλαγές θα ισχύουν για τυχόν περαιτέρω εντολές που εκτελούνται σε αυτήν την κονσόλα και θα κληρονομηθούν από οποιεσδήποτε εφαρμογές ξεκινούν από την κονσόλα.

Η συμπερίληψη του ονόματος της μεταβλητής μέσα στα σημάδια ποσοστού θα επεκταθεί στην υπάρχουσα τιμή, επιτρέποντας σας να προσθέσετε τη νέα σας τιμή είτε στην αρχή είτε στο τέλος. Τροποποιώντας το `PATH` προσθέτοντας τον κατάλογο που περιέχει python.exe στην αρχή είναι ένας κοινός τρόπος για να διασφαλιστεί ότι η σωστή έκδοση της Python θα ξεκινήσει.

Για να τροποποιήσετε μόνιμα τις προεπιλεγμένες μεταβλητές περιβάλλοντος, κάντε κλικ στην Έναρξη και αναζητήστε “επεξεργασία μεταβλητών περιβάλλοντος”, ή ανοίξτε τις Ιδιότητες Συστήματος, Advanced system settings και κάντε κλικ στο κουμπί Environment Variables. Σε αυτό το παράθυρο διαλόγου, μπορείτε να προσθέσετε ή να τροποποιήσετε μεταβλητές χρήστη και συστήματος. Για να αλλάξετε τις μεταβλητές συστήματος, χρειάζεστε απεριόριστη πρόσβαση στον υπολογιστή σας (δηλαδή δικαιώματα διαχειριστή).

Σημείωση

Τα Windows θα συνενώσουν τις μεταβλητές χρήστη μετά τις μεταβλητές συστήματος, οι οποίες ενδέχεται να προκαλέσουν απροσδόκητα αποτελέσματα κατά την τροποποίηση του `PATH`.

Η μεταβλητή `PYTHONPATH` χρησιμοποιείται από όλες τις εκδόσεις της Python, επομένως δεν θα πρέπει να τη ρυθμίσετε μόνιμα εκτός εάν οι διαδρομές που αναφέρονται περιλαμβάνουν μόνο κώδικα που είναι συμβατός με όλες τις εγκατεστημένες εκδόσεις Python.

Δείτε επίσης

https://docs.microsoft.com/en-us/windows/win32/procthread/environment-variables

  Επισκόπηση των μεταβλητών περιβάλλοντος στα Windows

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1

  Η εντολή `set` για την προσωρινή τροποποίηση μεταβλητών περιβάλλοντος

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx

  Η εντολή `setx`, για μόνιμη τροποποίηση μεταβλητών περιβάλλοντος

### 4.6.2. Εύρεση του εκτελέσιμου Python

Άλλαξε στην έκδοση 3.5.

Εκτός από τη χρήση της καταχώρισης του μενού έναρξης που δημιουργείται αυτόματα για τον διερμηνέα Python, ίσως θελήσετε να ξεκινήσετε την Python στη γραμμή εντολών. Το πρόγραμμα εγκατάστασης έχει μια επιλογή να το ρυθμίσει για εσάς.

Στην πρώτη σελίδα του προγράμματος εγκατάστασης, μπορεί να επιλεγεί μια επιλογή με την ένδειξη «Add Python to PATH» για να προσθέσει το πρόγραμμα εγκατάστασης τη θέση εγκατάστασης στο `PATH`. Η θέση του φακέλου του `Scripts\` προστίθεται επίσης. Αυτό σας επιτρέπει να πληκτρολογήσετε python για να εκτελέσετε τον διερμηνέα και pip για το πακέτο. Έτσι, μπορείτε να εκτελέσετε τα script σας με επιλογές γραμμής εντολών, δείτε την τεκμηρίωση Command line.

Εάν δεν ενεργοποιήσετε αυτήν την επιλογή κατά την εγκατάσταση, μπορείτε πάντα να εκτελέσετε ξανά το πρόγραμμα εγκατάστασης, να επιλέξετε Τροποποίηση, και να το ενεργοποιήσετε. Εναλλακτικά, μπορείτε να τροποποιήσετε μη αυτόματα το `PATH` χρησιμοποιώντας τις οδηγίες στο Excursus: Ρύθμιση μεταβλητών περιβάλλοντος. Πρέπει να ρυθμίσετε την μεταβλητή περιβάλλοντος `PATH`, ώστε να περιλαμβάνει τον κατάλογο της εγκατάστασης Python, οριοθετημένος με ένα ερωτηματικό από άλλες καταχωρήσεις. Ένα παράδειγμα μεταβλητής θα μπορούσε να μοιάζει με αυτό (υποθέτοντας ότι οι δύο πρώτες εγγραφές υπήρχαν ήδη):

    C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.9

## 4.7. Λειτουργία UTF-8

Νέο στην έκδοση 3.7.

Τα Windows εξακολουθούν να χρησιμοποιούν κωδικοποιήσεις παλαιού τύπου για την κωδικοποίηση του συστήματος (τη σελίδα κώδικα ANSI). Η Python τη χρησιμοποιεί για την προεπιλεγμένη κωδικοποίηση αρχείων κειμένου (π.χ. `locale.getencoding()`).

Αυτό μπορεί να προκαλέσει προβλήματα επειδή το UTF-8 χρησιμοποιείται ευρέως στο διαδίκτυο και στα περισσότερα συστήματα Unix, συμπεριλαμβανομένου του WSL (Windows Subsystem for Linux).

Μπορείτε να χρησιμοποιήσετε τη Python UTF-8 Mode για να αλλάξετε την προεπιλεγμένη κωδικοποίηση κειμένου σε UTF-8. Μπορείτε να ενεργοποιήσετε το Python UTF-8 Mode μέσω της επιλογής γραμμής εντολών `-X utf8` ή της μεταβλητής περιβάλλοντος `PYTHONUTF8=1`. Βλέπε `PYTHONUTF8` για την ενεργοποίηση της λειτουργίας UTF-8 και Excursus: Ρύθμιση μεταβλητών περιβάλλοντος για τον τρόπο τροποποίηση μεταβλητών περιβάλλοντος.

Όταν η Python UTF-8 Mode είναι ενεργοποιημένη, μπορείτε ακόμα να χρησιμοποιήσετε την κωδικοποίηση συστήματος (τη σελίδα κώδικα ANSI) μέσω του κωδικοποιητή «mbcs».

Λάβετε υπόψη ότι η προσθήκη `PYTHONUTF8=1` στις προεπιλεγμένες μεταβλητές περιβάλλοντος θα επηρεάσει όλες τις εφαρμογές Python 3.7+ στο σύστημα σας. Εάν έχετε οποιεσδήποτε εφαρμογές Python 3.7+ που βασίζονται στην κωδικοποίηση του συστήματος παλαιού τύπου, συνιστάται να ορίσετε το περιβάλλον μεταβλητή προσωρινά ή χρησιμοποιήστε την επιλογή γραμμής εντολών `-X utf8` .

Σημείωση

Ακόμη και όταν η λειτουργία UTF-8 είναι απενεργοποιημένη, η Python χρησιμοποιεί το UTF-8 από προεπιλογή στα Windows για:

- I/O κονσόλας με τυπικό I/O (δείτε το PEP 528 για λεπτομέρειες).

- Το filesystem encoding (δείτε το PEP 529 για λεπτομέρειες).

## 4.8. Το πρόγραμμα εκκίνησης Python για Windows

Νέο στην έκδοση 3.3.

Το πρόγραμμα εκκίνησης Python για Windows είναι ένα βοηθητικό πρόγραμμα που βοηθά στον εντοπισμό και την εκτέλεση διαφορετικών εκδόσεων Python. Επιτρέπει στα scripts (ή στη γραμμή εντολών) να υποδείξουν μια προτίμηση για μια συγκεκριμένη έκδοση Python και θα εντοπίσουν και θα εκτελέσουν αυτήν την έκδοση.

Σε αντίθεση με τη μεταβλητή `PATH`, το πρόγραμμα εκκίνησης θα επιλέξει σωστά την καταλληλότερη έκδοση της Python. Θα προτιμήσει τις εγκαταστάσεις ανά χρήστη έναντι των εγκαταστάσεων σε όλο το σύστημα και τις παραγγελίες ανά έκδοση γλώσσας αντί να χρησιμοποιεί την πιο πρόσφατα εγκατεστημένη έκδοση.

Το πρόγραμμα εκκίνησης προσδιορίστηκε αρχικά στο PEP 397.

### 4.8.1. Ξεκινώντας

#### 4.8.1.1. Από τη γραμμή εντολών

Άλλαξε στην έκδοση 3.6.

Εγκαταστάσεις σε όλο το σύστημα της Python 3.3 και νεότερες εκδόσεις θα τοποθετήσουν το πρόγραμμα εκκίνησης στο `PATH`. Το πρόγραμμα εκκίνησης είναι συμβατό με όλες τις διαθέσιμες εκδόσεις της Python, επομένως δεν έχει σημασία ποια έκδοση είναι εγκατεστημένη. Για να ελέγξτε ότι το πρόγραμμα εκκίνησης είναι διαθέσιμο, εκτελέστε την ακόλουθη εντολή στη Γραμμή Εντολών:

    py

Θα πρέπει να διαπιστώσετε ότι η πιο πρόσφατη έκδοση της Python που έχετε εγκαταστήσει έχει ξεκινήσει - μπορεί να βγει κανονικά και τυχόν πρόσθετα ορίσματα γραμμής εντολών που καθορίστηκαν θα σταλούν απευθείας στην Python.

Εάν έχετε εγκαταστήσει πολλές εκδόσεις της Python (π.χ. 3.7 και 3.11) θα έχετε παρατηρήσει ότι ξεκίνησε η Python 3.11 - για να εκκινήσετε την Python 3.7, δοκιμάστε την εντολή:

    py -3.7

Εάν θέλετε την πιο πρόσφατη έκδοση της Python 2 που έχετε εγκαταστήσει, δοκιμάστε την εντολή:

    py -2

Εάν δείτε το ακόλουθο σφάλμα, δεν έχετε εγκατεστημένο το πρόγραμμα εκκίνησης:

    'py' is not recognized as an internal or external command,
    operable program or batch file.

Η εντολή:

    py --list

εμφανίζει τις τρέχουσες εγκατεστημένες εκδόσεις της Python.

Το όρισμα `-x.y` είναι η σύντομη μορφή του ορίσματος `-V:Company/Tag`, το οποίο επιτρέπει την επιλογή ενός συγκεκριμένου χρόνου εκτέλεσης Python, συμπεριλαμβανομένων εκείνων που μπορεί να έχουν προέλθει από κάπου διαφορετικά από το python.org. Οποιοσδήποτε χρόνος εκτέλεσης έχει καταχωρηθεί ακολουθώντας το PEP 514 θα είναι ανιχνεύσιμος. Η εντολή `--list` παραθέτει όλους τους διαθέσιμους χρόνους εκτέλεσης χρησιμοποιώντας τη μορφή `-V:`.

Όταν χρησιμοποιείται το όρισμα `-V:`, ο καθορισμός της Εταιρείας θα περιορίσει την επιλογή σε χρόνους εκτέλεσης από αυτόν τον πάροχο, ενώ ο καθορισμός μόνο της ετικέτας θα επιλέγεται από όλους τους παρόχους. Σημειώστε ότι η παράλειψη της καθέτου (slash) συνεπάγεται μια ετικέτα:

    # Select any '3.*' tagged runtime
    py -V:3

    # Select any 'PythonCore' released runtime
    py -V:PythonCore/

    # Select PythonCore's latest Python 3 runtime
    py -V:PythonCore/3

Η σύντομη μορφή του ορίσματος (`-3`) επιλέγει μόνο από τις βασικές εκδόσεις Python, και όχι άλλες διανομές. Ωστόσο, η μεγαλύτερη μορφή (`-V:3`) θα επιλέξει από οποιαδήποτε.

Η εταιρεία έχει αντιστοιχιστεί στην πλήρη συμβολοσειρά, χωρίς διάκριση πεζών-κεφαλαίων. Η ετικέτα αντιστοιχίζεται είτε με την πλήρη συμβολοσειρά είτε με ένα πρόθεμα, με την προϋπόθεση ότι ο επόμενος χαρακτήρας είναι μια τελεία ή μια παύλα. Αυτό επιτρέπει την αντιστοίχιση του `-V:3.1` με το `3.1-32`, αλλά όχι `3.10`. Οι ετικέτες ταξινομούνται με αριθμητική σειρά (`3.10` είναι νεότερο από `3.1`), αλλά συγκρίνονται χρησιμοποιώντας κείμενο (`-V:3.01` δεν ταιριάζει με το `3.1`).

#### 4.8.1.2. Εικονικά Περιβάλλοντα

Νέο στην έκδοση 3.5.

Εάν το πρόγραμμα εγκατάστασης εκτελείται χωρίς ρητές προδιαγραφές έκδοσης Python και ένα εικονικό περιβάλλον (δημιουργημένο με το τυπικό module βιβλιοθήκης `venv` ή το εξωτερικό εργαλείο `virtualenv`) ενεργό, το πρόγραμμα εκκίνησης θα εκτελέσει τον διερμηνέα του εικονικού περιβάλλοντος αντί για το καθολικό. Για να εκτελέσετε τον καθολικό διερμηνέα, είτε απενεργοποιήστε το εικονικό περιβάλλον είτε καθορίστε ρητά την καθολική έκδοση Python.

#### 4.8.1.3. Από ένα script

Ας δημιουργήσουμε ένα δοκιμαστικό Python script - δημιουργήστε ένα αρχείο που ονομάζεται `hello.py` με τα ακόλουθα περιεχόμενα

    #! python
    import sys
    sys.stdout.write("hello from Python %s\n" % (sys.version,))

Από τον κατάλογο στον οποίο ζει το hello.py, εκτελέστε την εντολή:

    py hello.py

Θα πρέπει να παρατηρήσετε ότι ο αριθμός έκδοσης της τελευταίας εγκατάστασης Python 2.x έχει εκτυπωθεί. Τώρα δοκιμάστε να αλλάξετε την πρώτη γραμμή σε:

    #! python3

Η επανεκτέλεση της εντολής θα πρέπει τώρα να εκτυπώσει τις πιο πρόσφατες πληροφορίες Python 3.x. Όπως και με τα παραπάνω παραδείγματα γραμμής εντολών, μπορείτε να καθορίσετε έναν πιο σαφή προσδιορισμό έκδοσης. Υποθέτοντας ότι έχετε εγκαταστήσει την Python 3.7, δοκιμάστε να αλλάξετε την πρώτη γραμμή σε `#! python3.7` και θα πρέπει να βρείτε τυπωμένες τις πληροφορίες της έκδοσης 3.7.

Λάβετε υπόψη ότι σε αντίθεση με τη διαδραστική χρήση, ένα γυμνό «python» θα χρησιμοποιεί την πιο πρόσφατη έκδοση της Python 2.x που έχετε εγκαταστήσει. Αυτή είναι μια συμβατότητα προς τα πίσω και για συμβατότητα με Unix, όπου συνήθως αναφέρεται η εντολή `python` στην Python 2.

#### 4.8.1.4. Από συσχετίσεις αρχείων

Το πρόγραμμα εκκίνησης θα έπρεπε να είχε συσχετιστεί με αρχεία Python (δηλαδή αρχεία `.py`, `.pyw`, `.pyc`) όταν εγκαταστάθηκε. Αυτό σημαίνει ότι όταν κάνετε διπλό κλικ σε ένα από αυτά τα αρχεία από τον Windows Explorer, το πρόγραμμα εκκίνησης θα χρησιμοποιηθεί και επομένως μπορείτε να χρησιμοποιήσετε τις ίδιες ευκολίες που περιγράφονται παραπάνω για να έχετε το script να καθορίζει ποια έκδοση θα χρησιμοποιηθεί.

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

### 4.8.2. Γραμμές Shebang

Εάν η πρώτη γραμμή ενός script αρχείου ξεκινά με `#!`, είναι γνωστή ως γραμμή «shebang». Το Linux και άλλα Unix λειτουργικά συστήματα έχουν εγγενή υποστήριξη για τέτοιες γραμμές και χρησιμοποιούνται συνήθως σε τέτοιες γραμμές συστήματα για να υποδείξουν πως πρέπει να εκτελεστεί ένα script. Αυτό το πρόγραμμα εκκίνησης επιτρέπει τη χρήση των ίδιων εγκαταστάσεων με Python scripts στα Windows και τα παραπάνω παραδείγματα δείχνουν τη χρήση τους.

Για να επιτραπεί στις γραμμές shebang σε Python scripts να είναι φορητές μεταξύ Unix και Windows, αυτό το πρόγραμμα εκκίνησης υποστηρίζει έναν αριθμό “εικονικών” εντολών για να καθορίσει ποιος διερμηνέας θα χρησιμοποιηθεί. Οι υποστηριζόμενες εικονικές εντολές είναι:

- `/usr/bin/env`

- `/usr/bin/python`

- `/usr/local/bin/python`

- `python`

Για παράδειγμα, εάν η πρώτη γραμμή του script σας ξεκινάει με

    #! /usr/bin/python

Η προεπιλεγμένη Python θα εντοπιστεί και θα χρησιμοποιηθεί. Καθώς πολλά Python scripts που έχουν γραφτεί για να λειτουργούν στο Unix θα έχουν ήδη αυτήν την γραμμή, θα πρέπει να βρείτε ότι αυτά τα scripts μπορούν να χρησιμοποιηθούν από το πρόγραμμα εκκίνησης χωρίς τροποποίηση. Εάν γράφετε ένα νέο script στα Windows το οποίο ελπίζετε ότι θα είναι χρήσιμο στο Unix, θα πρέπει να χρησιμοποιήσετε μια από τις γραμμές shebang που ξεκινά με `/usr`.

Οποιαδήποτε από τις παραπάνω εικονικές εντολές μπορεί να προστεθεί με μια ρητή έκδοση (είτε μόνο η κύρια έκδοση, είτε η κύρια και δευτερεύουσα έκδοση). Επιπλέον, η έκδοση 32-bit μπορεί να ζητηθεί προσθέτοντας «-32» μετά τη δευτερεύουσα έκδοση. Δηλαδή `/usr/bin/python3.7-32` θα ζητήσει τη χρήση της python 3.7.

Νέο στην έκδοση 3.7: Ξεκινώντας με το πρόγραμμα εκκίνησης Python 3.7, είναι δυνατό να ζητηθεί η έκδοση 64-bit με το επίθημα «-64». Επιπλέον, είναι δυνατό να καθοριστεί μια κύρια έκδοση και μια αρχιτεκτονική χωρίς δευτερεύοντα (δηλαδή `/usr/bin/python3-64`).

Άλλαξε στην έκδοση 3.11: Το επίθημα «-64» έχει καταργηθεί, και τώρα υποδηλώνει «οποιαδήποτε αρχιτεκτονική που δεν είναι αποδεδειγμένα i386/32-bit». Για να ζητήσετε ένα συγκεκριμένο περιβάλλον, χρησιμοποιήστε το νέο `-V:TAG` όρισμα με την πλήρη ετικέτα.

Η φόρμα `/usr/bin/env` της γραμμής shebang έχει μια επιπλέον ειδική ιδιότητα. Πριν αναζητήσετε εγκατεστημένους διερμηνείς Python, αυτή η φόρμα θα αναζητήσει στο εκτελέσιμο αρχείο `PATH` για ένα εκτελέσιμο αρχείο Python που ταιριάζει με το όνομα που παρέχεται ως το πρώτο όρισμα. Αυτό αντιστοιχεί στη συμπεριφορά του προγράμματος Unix `env`, το οποίο εκτελεί μια αναζήτηση `PATH`. Εάν δεν μπορεί να βρεθεί ένα εκτελέσιμο αρχείο που ταιριάζει με το πρώτο όρισμα μετά την εντολή `env`, αλλά το όρισμα ξεκινά με `python`, ο χειρισμός του θα γίνει όπως περιγράφεται για τις άλλες εικονικές εντολές. Η μεταβλητή περιβάλλοντος `PYLAUNCHER_NO_SEARCH_PATH` μπορεί να οριστεί (σε οποιαδήποτε τιμή) για να παραλείψει αυτήν την αναζήτηση για `PATH`.

Οι γραμμές Shebang που δεν ταιριάζουν με κανένα από αυτά τα μοτίβα αναζητούνται στην ενότητα `[commands]` του προγράμματος εκκίνησης .INI file. Αυτό μπορεί να χρησιμοποιηθεί για τον χειρισμό ορισμένων εντολών με τρόπο που να έχει νόημα για το σύστημά σας. Το όνομα της εντολής πρέπει να είναι ένα μεμονωμένο όρισμα (δεν υπάρχουν κενά στο εκτελέσιμο αρχείο shebang) και η τιμή που αντικαθίσταται είναι η πλήρης διαδρομή προς το εκτελέσιμο (τα πρόσθετα ορίσματα που καθορίζονται στο .INI θα αναφέρονται ως μέρος του ονόματος αρχείου).

    [commands]
    /bin/xpython=C:\Program Files\XPython\python.exe

Οποιεσδήποτε εντολές που δεν βρίσκονται στο αρχείο .INI αντιμετωπίζονται ως εκτελέσιμες διαδρομές Windows που είναι απόλυτες ή σχετικές με τον κατάλογο που περιέχει το script αρχείο. Αυτό είναι μια ευκολία για σενάρια μόνο για Windows, όπως αυτά που δημιουργούνται από ένα πρόγραμμα εγκατάστασης, δεδομένου ότι η συμπεριφορά δεν είναι συμβατή με κελύφη τύπου Unix. Αυτές οι διαδρομές μπορεί να αναφέρονται και μπορεί να περιλαμβάνουν πολλαπλά ορίσματα, μετά τη διαδρομή προς το script και θα προσαρτηθούν τυχόν πρόσθετα ορίσματα.

### 4.8.3. Ορίσματα στις γραμμές shebang

Οι γραμμές shebang μπορούν επίσης να καθορίσουν πρόσθετες επιλογές που θα μεταβιβαστούν στον διερμηνέα Python. Για παράδειγμα, εάν έχετε μια γραμμή shebang:

    #! /usr/bin/python -v

Στη συνέχεια, η Python θα ξεκινήσει με την επιλογή `-v`

### 4.8.4. Προσαρμογή

#### 4.8.4.1. Προσαρμογή μέσω αρχείων INI

Θα γίνει αναζήτηση δύο αρχείων .ini από το πρόγραμμα εκκίνησης - `py.ini` στον κατάλογο δεδομένων εφαρμογής του τρέχοντος χρήστη (`%LOCALAPPDATA%` ή `$env:LocalAppData`) και `py.ini` στον ίδιο κατάλογο με το πρόγραμμα εκκίνησης. Τα ίδια αρχεία .ini χρησιμοποιούνται τόσο για την έκδοση “κονσόλας” του προγράμματος εκκίνησης (π.χ. py.exe) όσο και για την έκδοση “windows” (δηλ. pyw.exe).

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

#### 4.8.4.2. Προσαρμογή προεπιλεγμένων εκδόσεων Python

Σε ορισμένες περιπτώσεις, ένας προσδιορισμός έκδοσης μπορεί να συμπεριληφθεί σε μια εντολή για να υπαγορεύσει ποια έκδοση της Python θα χρησιμοποιηθεί από την εντολή. Ένας προσδιοριστής έκδοσης ξεκινά με τον αριθμό κύριας έκδοσης και μπορεί προαιρετικά να ακολουθείται από μια τελεία (“.”) και ένας δευτερεύων προσδιοριστής έκδοσης. Επιπλέον, είναι δυνατό να καθοριστεί εάν θα ζητηθεί υλοποίηση 32 ή 64 bit προσθέτοντας «-32» ή «-64».

Για παράδειγμα, μια γραμμή shebang του `#!python` δεν έχει προσδιοριστικό έκδοσης, ενώ το `#!python3` έχει έναν προσδιορισμό έκδοσης που καθορίζει μόνο μια κύρια έκδοση.

Εάν δεν βρεθούν κριτήρια έκδοσης σε μια εντολή, η μεταβλητή περιβάλλοντος `PY_PYTHON` μπορεί να οριστεί για να καθορίσει τον προσδιορισμό της προεπιλεγμένης έκδοσης. Εάν δεν έχει οριστεί, η προεπιλογή είναι «3», «3.7», «3.7-32» ή «3.7-64». (Σημειώστε ότι η επιλογή «-64» είναι διαθέσιμη μόνο με το πρόγραμμα εκκίνησης που περιλαμβάνεται στην Python 3.7 ή νεότερη έκδοση.)

Εάν δεν βρεθούν περιορισμοί δευτερεύουσας έκδοσης, η μεταβλητή περιβάλλοντος `PY_PYTHON{major}` (όπου `{major}` είναι ο προσδιορισμός της τρέχουσας κύριας έκδοσης όπως προσδιορίζεται παραπάνω) μπορεί να οριστεί για να καθορίσει την πλήρη έκδοση. Εάν όχι αν βρεθεί τέτοια επιλογή, ο εκκινητής θα απαριθμήσει τις εγκατεστημένες εκδόσεις Python και θα χρησιμοποιήσει την πιο πρόσφατη δευτερεύουσα έκδοση που βρέθηκε για την κύρια έκδοση, η οποία είναι πιθανό, αν και δεν είναι εγγυημένη, να είναι η πιο πρόσφατα εγκατεστημένη έκδοση σε αυτήν την οικογένεια.

Σε Windows 64-bit με εγκατεστημένες υλοποιήσεις 32-bit και 64-bit της ίδιας (κύριας.δευτερεύουσας) έκδοσης Python, η έκδοση 64-bit θα προτιμάται πάντα. Αυτό θα ισχύει τόσο για 32-bit όσο και για 64-bit υλοποιήσεις του προγράμματος εκκίνησης - ένα πρόγραμμα εκκίνησης 32-bit θα προτιμήσει να εκτελέσει μια εγκατάσταση Python 64-bit της καθορισμένης έκδοσης, εάν είναι διαθέσιμη. Αυτό είναι έτσι, ώστε η συμπεριφορά του προγράμματος εκκίνησης μπορεί να προβλεφθεί γνωρίζοντας μόνο ποιες εκδόσεις είναι εγκατεστημένες στον υπολογιστή και χωρίς να λαμβάνεται υπόψη η σειρά με την οποία εγκαταστάθηκαν (δηλαδή, χωρίς να γνωρίζουμε εάν μια έκδοση 32 ή 64-bit της Python και το αντίστοιχο πρόγραμμα εκκίνησης εγκαταστάθηκε τελευταίο). Όπως σημειώθηκε παραπάνω, ένα προαιρετικό επίθημα «-32» ή «-64» μπορεί να χρησιμοποιηθεί σε έναν προσδιοριστή έκδοσης για την αλλαγή αυτής της συμπεριφοράς.

Παραδείγματα:

- Εάν δεν οριστούν σχετικές επιλογές, οι εντολές `python` και `python2` θα χρησιμοποιήσουν την πιο πρόσφατη εγκατεστημένη έκδοση Python 2.x και η εντολή `python3` θα χρησιμοποιήσει την πιο πρόσφατη εγκατεστημένη Python 3.x.

- Η εντολή `python3.7` δεν θα συμβουλευτεί καμία απολύτως επιλογή καθώς οι εκδόσεις είναι πλήρως καθορισμένες.

- Εάν `PY_PYTHON=3`, οι εντολές `python` και `python3` θα χρησιμοποιούν και οι δύο την πιο πρόσφατη εγκατεστημένη έκδοση Python 3.

- Εάν `PY_PYTHON=3.7-32`, η εντολή `python` θα χρησιμοποιήσει την υλοποίηση 32-bit του 3.7 ενώ η εντολή `python3` θα χρησιμοποιήσει την πιο πρόσφατη εγκατεστημένη Python (Το PY_PYTHON δεν θεωρήθηκε καθόλου καθώς καθορίστηκε μια κύρια έκδοση.)

- Εάν `PY_PYTHON=3` και `PY_PYTHON3=3.7`, οι εντολές `python` και `python3` θα χρησιμοποιούν και οι δύο συγκεκριμένα την 3.7

Εκτός από τις μεταβλητές περιβάλλοντος, οι ίδιες ρυθμίσεις μπορούν να διαμορφωθούν στο αρχείο .INI που χρησιμοποιείται από το πρόγραμμα εκκίνησης. Η ενότητα στο αρχείο INI ονομάζεται `[defaults]` και το όνομα του κλειδιού θα είναι το ίδιο με τις μεταβλητές περιβάλλοντος χωρίς το αρχικό πρόθεμα `PY_` (και σημειώστε ότι τα ονόματα κλειδιών στο αρχείο INI δεν έχουν διάκριση πεζών-κεφαλαίων.) Τα περιεχόμενα μιας μεταβλητής περιβάλλοντος θα αντικαταστήσουν τα στοιχεία που καθορίζονται στο αρχείο INI.

Για παράδειγμα:

- Η ρύθμιση `PY_PYTHON=3.7` είναι ισοδύναμη με το αρχείο INI που περιέχει:

    [defaults]
    python=3.7

- Η ρύθμιση `PY_PYTHON=3` και `PY_PYTHON3=3.7` ισοδυναμεί με το αρχείο INI που περιέχει:

    [defaults]
    python=3
    python3=3.7

### 4.8.5. Διαγνωστικά

Εάν μια μεταβλητή περιβάλλοντος `PYLAUNCHER_DEBUG` έχει οριστεί (σε οποιαδήποτε τιμή), το πρόγραμμα εκκίνησης θα εκτυπώσει διαγνωστικές πληροφορίες στο stderr (δηλαδή στην κονσόλα). Ενώ αυτές οι πληροφορίες καταφέρνουν να είναι ταυτόχρονα αναλυτικές και, θα πρέπει να επιτρέπουν για να δείτε ποιες εκδόσεις της Python εντοπίστηκαν, γιατί επιλέχθηκε μια συγκεκριμένη έκδοση και η ακριβής γραμμή εντολών που χρησιμοποιήθηκε για την εκτέλεση του στόχου Python. Προορίζεται κυρίως για δοκιμή και εντοπισμό σφαλμάτων.

### 4.8.6. Dry Run

Εάν μια μεταβλητή περιβάλλοντος `PYLAUNCHER_DRYRUN` έχει οριστεί (σε οποιαδήποτε τιμή), το πρόγραμμα εκκίνησης θα δώσει την εντολή που θα εκτελούσε, αλλά δεν θα εκκινήσει πραγματικά την Python. Αυτό μπορεί να είναι χρήσιμο για εργαλεία που θέλουν να χρησιμοποιήσουν το πρόγραμμα εκκίνησης για να εντοπιστεί και να εκκινηθεί απευθείας η Python. Σημειώστε ότι η εντολή που είναι γραμμένη στην τυπική έξοδο κωδικοποιείται πάντα με χρήση UTF-8 και ενδέχεται να μην αποδίδεται σωστά στην κονσόλα.

### 4.8.7. Εγκατάσταση κατ” απαίτηση

Εάν μια μεταβλητή περιβάλλοντος `PYLAUNCHER_ALLOW_INSTALL` έχει οριστεί (σε οποιαδήποτε τιμή), και η ζητούμενη έκδοση Python δεν είναι εγκατεστημένη αλλά είναι διαθέσιμη στο Microsoft Store, το πρόγραμμα εκκίνησης θα επιχειρήσει να την εγκαταστήσει. Αυτό μπορεί να απαιτεί την ολοκλήρωση της αλληλεπίδρασης του χρήστη και ίσως χρειαστεί να εκτελέσετε ξανά την εντολή.

Μια πρόσθετη μεταβλητή `PYLAUNCHER_ALWAYS_INSTALL` αναγκάζει το πρόγραμμα εκκίνησης να προσπαθεί πάντα να εγκαταστήσει την Python, ακόμα κι αν εντοπιστεί. Αυτό προορίζεται κυρίως για δοκιμή (και θα πρέπει να χρησιμοποιείται με το `PYLAUNCHER_DRYRUN`).

### 4.8.8. Κωδικοί επιστροφής

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

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

Όνομα | Τιμή | Περιγραφή
--- | --- | ---
RC_BAD_VENV_CFG | 107 | Βρέθηκε ένα `pyvenv.cfg` αλλά είναι κατεστραμμένο.
RC_CREATE_PROCESS | 101 | Απέτυχε η εκκίνηση της Python.
RC_INSTALLING | 111 | Ξεκίνησε μια εγκατάσταση, αλλά η εντολή θα πρέπει να εκτελεστεί ξανά μετά την ολοκλήρωση της.
RC_INTERNAL_ERROR | 109 | Απροσδόκητο σφάλμα. Αναφέρετε ένα σφάλμα.
RC_NO_COMMANDLINE | 108 | Δεν είναι δυνατή η λήψη της γραμμής εντολών από το λειτουργικό σύστημα.
RC_NO_PYTHON | 103 | Δεν είναι δυνατός ο εντοπισμός της ζητούμενης έκδοσης.
RC_NO_VENV_CFG | 106 | Απαιτήθηκε ένα `pyvenv.cfg` αλλά δεν βρέθηκε.

## 4.9. Εύρεση modules

Αυτές οι σημειώσεις συμπληρώνουν την περιγραφή The initialization of the sys.path module search path με λεπτομερείς σημειώσεις των Windows.

Όταν δεν βρεθεί αρχείο `._pth`, συμπληρώνεται έτσι το `sys.path` στα Windows:

- Μια κενή καταχώρηση προστίθεται στην αρχή, η οποία αντιστοιχεί στον τρέχοντα κατάλογο.

- Εάν υπάρχει η μεταβλητή περιβάλλοντος `PYTHONPATH`, όπως περιγράφεται στο Environment variables, οι εγγραφές της προστίθενται στη συνέχεια. Σημειώστε ότι στα Windows, οι διαδρομές σε αυτήν τη μεταβλητή πρέπει να διαχωρίζονται με ερωτηματικά, για να γίνει διάκριση από την άνω και κάτω τελεία που χρησιμοποιείται στα αναγνωριστικά μονάδων δίσκου (`C:\` κλπ.).

- Μπορούν να προστεθούν επιπλέον «διαδρομές εφαρμογής» στο μητρώο ως δευτερεύοντα κλειδιά του `\SOFTWARE\Python\PythonCore{version}\PythonPath` κάτω από τις κυψέλες `HKEY_CURRENT_USER` και `HKEY_LOCAL_MACHINE`. Τα δευτερεύοντα κλειδιά που έχουν ως προεπιλεγμένη τιμή συμβολοσειρές διαδρομής οριοθετημένη με ερωτηματικό θα προκαλέσει την προσθήκη κάθε διαδρομής στο `sys.path`. (Λάβετε υπόψη ότι όλα τα γνωστά προγράμματα εγκατάστασης χρησιμοποιούν μόνο HKLM, επομένως το HKCU είναι συνήθως κενό.)

- Εάν έχει οριστεί η μεταβλητή περιβάλλοντος `PYTHONHOME`, θεωρείται ότι είναι «Python Home». Διαφορετικά, η διαδρομή του κύριου εκτελέσιμου Python χρησιμοποιείται για τον εντοπισμό ενός «αρχείου ορόσημο» (είτε `Lib\os.py` ή `pythonXY.zip`) για να συμπεράνουμε το «Python Home». Αν βρεθεί ένα Python home, οι σχετικοί υποκατάλογοι που προστέθηκαν στο `sys.path` (`Lib`, `plat-win`, κ.λπ.) βασίζονται σε αυτόν τον φάκελο. Διαφορετικά, η διαδρομή του πυρήνα της Python δημιουργείται από το PythonPath που είναι αποθηκευμένο στο μητρώο.

- Εάν δεν μπορεί να εντοπιστεί το Python Home, δεν καθορίζεται `PYTHONPATH` στο περιβάλλον και δεν μπορούν να βρεθούν καταχωρίσεις μητρώου, χρησιμοποιείται μια προεπιλεγμένη διαδρομή με σχετικές καταχωρήσεις (π.χ. `.\Lib;.\plat-win`, κλπ).

Εάν ένα αρχείο `pyvenv.cfg` βρίσκεται δίπλα στο κύριο εκτελέσιμο αρχείο ή στον κατάλογο ένα επίπεδο πάνω από το εκτελέσιμο αρχείο, ισχύουν οι ακόλουθες παραλλαγές:

- Εάν το `home` είναι μια απόλυτη διαδρομή και το `PYTHONHOME` δεν έχει οριστεί, αυτή η διαδρομή χρησιμοποιείται αντί για τη διαδρομή προς το κύριο εκτελέσιμο κατά την εξαγωγή της αρχικής τοποθεσίας.

Το τελικό αποτέλεσμα όλων αυτών είναι:

- Όταν εκτελείται το `python.exe`, ή οποιοδήποτε άλλο .exe στον κύριο κατάλογο της Python (είτε μια εγκατεστημένη έκδοση, είτε απευθείας από τον κατάλογο PCbuild), συνάγεται η διαδρομή του πυρήνα και οι βασικές διαφορές στο μητρώο αγνοούνται. Άλλες «διαδρομές εφαρμογής» στο μητρώο διαβάζονται πάντα.

- Όταν η Python φιλοξενείται σε άλλο .exe (διαφορετικός κατάλογος, ενσωματωμένος μέσω COM, κ.λπ.), το «Python Home» δεν θα συναχθεί επομένως χρησιμοποιείται η βασική διαδρομή από το μητρώο. Άλλες «διαδρομές εφαρμογής» στο μητρώο διαβάζονται πάντα.

- Εάν η Python δεν μπορεί να βρει το home της και δεν υπάρχει τιμή μητρώου (frozen .exe, κάποια πολύ περίεργη εγκατάσταση) λαμβάνετε μια διαδρομή με κάποιες προεπιλεγμένες, αλλά σχετικές, διαδρομές.

Για όσους θέλουν να ενσωματώσουν την Python στην εφαρμογή ή την διανομή τους, οι ακόλουθες συμβουλές θα αποτρέψουν τις διενέξεις με άλλες εγκαταστάσεις:

- Συμπεριλάβετε ένα αρχείο `._pth` δίπλα στο εκτελέσιμο αρχείο σας που περιέχει τους καταλόγους που θέλετε να συμπεριλάβετε. Αυτό θα αγνοήσει τις διαδρομές που παρατίθενται στο μητρώο και τις μεταβλητές περιβάλλοντος και θα αγνοήσει επίσης το `site` εκτός εάν αναφέρεται το `import site`.

- Εάν φορτώνετε το `python3.dll` ή το `python37.dll` στο δικό σας εκτελέσιμο αρχείο, καλέστε ρητά το `Py_SetPath()` ή (τουλάχιστον) το `Py_SetProgramName()` πριν από `Py_Initialize()`.

- Διαγράψτε και/ή αντικαταστήστε το `PYTHONPATH` και ορίστε το `PYTHONHOME πριν από την εκκίνηση του :file:`python.exe` από την εφαρμογή σας.

- Εάν δεν μπορείτε να χρησιμοποιήσετε τις προηγούμενες προτάσεις (για παράδειγμα, είστε μια διανομή που επιτρέπει στους χρήστες να εκτελούν απευθείας το `python.exe`), βεβαιωθείτε ότι το αρχείο ορόσημο (`Lib\os.py`) υπάρχει στον κατάλογο εγκατάστασης σας. (Λάβετε υπόψη ότι δεν θα εντοπιστεί σε ένα αρχείο ZIP, αλλά θα εντοπιστεί ένα αρχείο ZIP με το σωστό όνομα.)

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

Άλλαξε στην έκδοση 3.6: Προσθήκη υποστήριξης αρχείου `._pth` και καταργείται η επιλογή `applocal` από το `pyvenv.cfg`.

Άλλαξε στην έκδοση 3.6: Προσθήκη `pythonXX.zip` ως πιθανό ορόσημο όταν βρίσκεται ακριβώς δίπλα στο εκτελέσιμο αρχείο.

Αποσύρθηκε στην έκδοση 3.6: Τα modules που καθορίζονται στο μητρώο στην περιοχή `Modules` (όχι `PythonPath`) μπορούν να εισαχθούν από το `importlib.machinery.WindowsRegistryFinder`. Αυτό το πρόγραμμα εύρεσης είναι ενεργοποιημένο στα Windows σε 3.6.0 και παλαιότερες εκδόσεις, αλλά ενδέχεται να πρέπει να προστεθεί ρητά στο `sys.meta_path` στο μέλλον.

## 4.10. Πρόσθετα modules

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

Τα τυπικά modules ειδικά για Windows τεκμηριώνονται στο MS Windows Specific Services.

### 4.10.1. PyWin32

The PyWin32 module by Mark Hammond is a collection of modules for advanced Windows-specific support. This includes utilities for:

- Component Object Model (COM)

- Win32 API κλήσεις

- Μητρώο

- Μητρώο συμβάντων

- Microsoft Foundation Classes (MFC) user interfaces

Το PythonWin είναι ένα δείγμα εφαρμογής MFC που αποστέλλεται με το PyWin32. Είναι ένα ενσωματωμένο IDE με ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων.

Δείτε επίσης

Win32 How Do I…?

  από τον Tim Golden

Python and COM

  από τους David και Paul Boddie

### 4.10.2. cx_Freeze

Το cx_Freeze αναδιπλώνει Python scripts σε εκτελέσιμα προγράμματα των Windows (`*.exe` αρχεία). Όταν το κάνετε αυτό, μπορείτε να διανείμετε την εφαρμογή σας χωρίς να απαιτείται από τους χρήστες σας να εγκαταστήσουν την Python.

## 4.11. Μεταγλώττιση Python στα Windows

Εάν θέλετε να μεταγλωττίσετε μόνοι σας το CPython, το πρώτο πράγμα που πρέπει να κάνετε είναι να λάβετε το source. Μπορείτε να κάνετε λήψη είτε τον πηγαίο κώδικα της πιο πρόσφατης έκδοσης είτε απλώς να πάρετε μια φρέσκια έκδοση checkout.

Το δέντρο προέλευσης περιέχει μια λύση έκδοσης και αρχεία έργου για το Microsoft Visual Studio, που είναι ο μεταγλωττιστής που χρησιμοποιείται για τη δημιουργία των επίσημων εκδόσεων Python. Αυτά τα αρχεία βρίσκονται στον κατάλογο `PCbuild`.

Ελέγξτε το `PCbuild/readme.txt` για γενικές πληροφορίες σχετικά με τη διαδικασία κατασκευής.

Για modules επέκτασης, συμβουλευτείτε το Building C and C++ Extensions on Windows.

## 4.12. Άλλες Πλατφόρμες

Με τη συνεχή ανάπτυξη της Python, ορισμένες πλατφόρμες που υποστηριζόταν παλαιότερα δεν υποστηρίζονται πλέον (λόγω έλλειψης χρηστών ή προγραμματιστών). Ελέγξτε το PEP 11 για λεπτομέρειες σχετικά με όλες τις μη υποστηριζόμενες πλατφόρμες.

- Το Windows CE no longer supported από την Python 3 (αν ήταν ποτέ).

- Το πρόγραμμα εγκατάστασης Cygwin προσφέρει επίσης την εγκατάσταση του διερμηνέα Python <https://cygwin.com/packages/summary/python3.html>`

Ανατρέξτε στην ενότητα Python for Windows για λεπτομερείς πληροφορίες σχετικά με πλατφόρμες με προμεταγλωττισμένα προγράμματα εγκατάστασης.