Χρήσιμα εργαλεία για τοπική ανάπτυξη

Χρήσιμα εργαλεία που μπορούν να σε βοηθήσουν να αναπτύσσεις κώδικα Python για το Exercism στον δικό σου υπολογιστή.


Note

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



Πριν ξεκινήσεις να εξερευνάς, βεβαιώσου ότι έχεις εγκαταστήσει μια πρόσφατη έκδοση της Python. Η διαδικτυακή πλατφόρμα του Exercism υποστηρίζει αυτή τη στιγμή Python 3.10 - 3.13.5 (ασκήσεις και τεστ) και Python 3.13.5 (εργαλεία). Ο διαδικτυακός μας test runner χρησιμοποιεί αυτή τη στιγμή pytest 8.4.0 και pytest-subtests 0.14.2. Ο διαδικτυακός μας analyzer χρησιμοποιεί pylint 4.0.4. Αν χρησιμοποιήσεις διαφορετικές εκδόσεις των Python, pytest ή pylint τοπικά, μπορεί να πάρεις διαφορετικά αποτελέσματα από ό,τι στην ιστοσελίδα. Για περισσότερες πληροφορίες, δες το Installing Python locally.


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

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

Υπάρχουν πολλά εργαλεία εικονικών περιβαλλόντων και παρόμοια με εικονικά περιβάλλοντα σε χρήση σήμερα, καθώς και ένα αυξανόμενο κίνημα που προτιμά τα inline script metadata, τα dev containers ή το docker αντί για εικονικά περιβάλλοντα. Είναι σημαντικό να δοκιμάσεις διαφορετικές στρατηγικές και να βρεις αυτή που ταιριάζει στο στυλ ανάπτυξης και στις ανάγκες του έργου σου. Μην υποθέσεις ότι οι στρατηγικές εδώ ταιριάζουν σε όλους ή ότι είναι οι μόνες επιλογές σου. Για μια πιο γενική επισκόπηση εργαλείων που δεν καλύπτονται εδώ, ρίξε μια ματιά σε αυτή την ανάρτηση ιστολογίου του Bas Nijholt και μείνε περίεργος.

Υπάρχουν τρία βασικά εργαλεία εικονικών περιβαλλόντων που θα καλύψουμε εδώ: η venv της βασικής βιβλιοθήκης της Python, το conda env τρίτου κατασκευαστή, που χρησιμοποιεί τον διαχειριστή πακέτων conda και (συνήθως) τη διανομή Anaconda της Python, και το uv, ο αντικαταστάτης των pip + venv τρίτου κατασκευαστή. Και τα τρία είναι αρκετά απλά στη χρήση ή/και την εγκατάσταση.

Επιπλέον, τα PyEnv, Poetry και virtualenvwrapper είναι εργαλεία που μπορούν να σε βοηθήσουν να διαχειρίζεσαι πολλαπλές εκδόσεις της Python και πολλαπλά περιβάλλοντα Python στον ίδιο υπολογιστή.


Δημιουργία εικονικού περιβάλλοντος με venv

Για να δημιουργήσεις ένα εικονικό περιβάλλον με τη venv, κάνε cd στον κατάλογο όπου θέλεις να αποθηκεύεις τα περιβάλλοντά σου. Αυτός θα πρέπει να είναι ένας κατάλογος ξεχωριστός από τον κώδικα του έργου σου και ένας που δεν θα προσθέσεις στον έλεγχο εκδόσεων. Στη συνέχεια, τρέξε την εντολή venv με το όνομα του φακέλου όπου θέλεις να αποθηκεύσεις αυτό το συγκεκριμένο περιβάλλον. Η συνηθισμένη σύμβαση είναι να ονομάζεις αυτόν τον φάκελο <project-name-here>_venv:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

Για να ενεργοποιήσεις το εικονικό περιβάλλον, τρέξε την παρακάτω εντολή:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

Για να ενεργοποιήσεις το εικονικό περιβάλλον, τρέξε την παρακάτω εντολή:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

Μόλις ενεργοποιηθεί μια venv, μπορείς να τρέξεις εντολές pip για εγκατάσταση πακέτων "μέσα" στο περιβάλλον. Τα εγκατεστημένα πακέτα θα συσχετιστούν με την έκδοση Python της venv και θα βρίσκονται μέσα στο {name_of_virtual_env}/Lib.

Η απενεργοποίηση ενός εικονικού περιβάλλοντος γίνεται καλώντας το σενάριο deactivate, που βρίσκεται στον ίδιο κατάλογο με το activate.


Δημιουργία εικονικού περιβάλλοντος με conda

Η τελευταία έκδοση της conda μπορεί να εγκατασταθεί μέσω του miniconda. Αυτό το cheatsheet της conda είναι πολύ χρήσιμο, όπως και τα έγγραφα της conda.

Αρχικά δημιουργήθηκε ως διαχειριστής πακέτων Python για τη δημοφιλή Anaconda distribution της "επιστημονικής Python", αλλά αργότερα η conda γενικεύτηκε και επεκτάθηκε. Τα περιβάλλοντα conda είναι παρόμοια με τις venv, με βασική διαφορά ότι η conda μπορεί να δημιουργήσει εικονικά περιβάλλοντα και να εγκαταστήσει πακέτα για πολλές άλλες γλώσσες προγραμματισμού εκτός από την Python.

Οι γλώσσες που υποστηρίζει η conda περιλαμβάνουν τις R, JavaScript, Ruby, Fortran, C/C++, Scala, Java και άλλες. Για μια σύγκριση των εντολών της conda εναντίον της venv, δες την αναφορά εντολών της conda.


MacOS/Linux

Για να δημιουργήσεις ένα περιβάλλον conda, πληκτρολόγησε τα παρακάτω, αντικαθιστώντας το {name of environment} με το όνομα που θέλεις και το python={version} με την έκδοση Python που θέλεις. Μπορείς να προσθέσεις μετά όποια επιπλέον πακέτα θέλεις να εγκαταστήσεις μέσα στο περιβάλλον:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Η δημιουργία ενός περιβάλλοντος conda στα Windows χρησιμοποιεί τις ίδιες γενικές εντολές με το Linux/MacOS. Ωστόσο, συνιστάται να χρησιμοποιήσεις τα τερματικά cmd ή powershell της Anaconda αντί να προσθέσεις την conda στη διαδρομή σου:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

Εργασία σε έργα με το uv: uv

Το uv είναι ένα εργαλείο διαχείρισης πακέτων και έργων Python από την Astral, γραμμένο σε Rust. Σχεδιάστηκε για να αντικαταστήσει τα pip, venv, poetry και άλλα εργαλεία συσκευασίας/διαχείρισης εξαρτήσεων της Python. Σε αντίθεση με τη Conda ή τη Mamba, το uv είναι ειδικευμένο/προσαρμοσμένο μόνο στην Python. Ωστόσο, το uv υποστηρίζει τη δημιουργία αρθρωμάτων επέκτασης της Python γραμμένων σε άλλες γλώσσες, όπως η Fortran. Η Astral είναι επίσης η εταιρεία πίσω από το δημοφιλές linter Ruff και το TY, έναν στατικό ελεγκτή τύπων για τα type hints της Python, και τα δύο γραμμένα σε Rust.

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

Περιτύλιγμα εικονικού περιβάλλοντος

Έγγραφα και υπόβαθρο: virtualenvwrapper.

Το πακέτο virtualenvwrapper λειτουργεί πάνω από τη venv για να διαχειρίζεται όλα τα εικονικά περιβάλλοντά σου σε ένα σημείο. Μπορείς να δημιουργείς, να αντιγράφεις, να διαγράφεις και να εναλλάσσεσαι μεταξύ περιβαλλόντων με εντολές τύπου Linux, όπως lsvirtualenv (για να εμφανίσεις τα περιβάλλοντα) και mkvirtualenv (για να δημιουργήσεις ένα περιβάλλον). Επιτρέπει επίσης να προσθέτεις επιπλέον εργαλεία διαχείρισης μέσω επεκτάσεων. Μπορείς ακόμη και να δημιουργήσεις τις δικές σου επεκτάσεις για το εργαλείο, ακολουθώντας αυτό το σεμινάριο.


PyEnv

Το pyenv είναι το fork για Python των δημοφιλών εργαλείων rbenv/ruby-build, τροποποιημένο για την Python. Είναι ουσιαστικά ένα σύνολο σεναρίων και shims που επιτρέπουν τον ορισμό εκδόσεων Python τόσο σε καθολικό επίπεδο όσο και σε επίπεδο χρήστη. Προσπαθεί να ακολουθεί την παράδοση του Unix: ένα εργαλείο ενός σκοπού, διακριτικό, που κάνει καλά ένα πράγμα.

Το pyenv και τα έγγραφά του βρίσκονται στο GitHub.



Επεξεργαστές κειμένου και IDE



Visual Studio Code

Το Visual studio code (VS Code) είναι ένας δωρεάν επεξεργαστής κώδικα από τη Microsoft. Περιλαμβάνει εξαιρετική υποστήριξη τόσο για εικονικά περιβάλλοντα/περιβάλλοντα conda όσο και για το docker (μέσω του πρόσθετου docker) και μπορεί να επεκταθεί με πολλά διαφορετικά πρόσθετα για τεστ, linting, μορφοποίηση και ανάπτυξη ιστού.

Python για VS Code

Αναγνωριστικό επέκτασης: ms-python.python

Κεφαλίδα επέκτασης Python στο VS Code

Η επέκταση Python της Microsoft είναι η επίσημη επέκταση Python της Microsoft για το VS Code και συνιστάται ανεπιφύλακτα. Έχει ένα ευρύ φάσμα δυνατοτήτων, όπως διαχείριση περιβαλλόντων, διαχείριση τεστ, linting και debugging. Από την τελευταία έκδοση και μετά, η εγκατάσταση της επέκτασης MS Python κατεβάζει επίσης το pylance (ένα δημοφιλές πακέτο για linting και επικύρωση κώδικα Python) και το jupyter (για εργασία με Jupyter Notebooks).

  • Ένα σεμινάριο εγκατάστασης είναι διαθέσιμο εδώ και η αναφορά ρυθμίσεων είναι πολύ χρήσιμη.
  • Πληροφορίες για τη ρύθμιση εκδόσεων Python και την εργασία με εικονικά περιβάλλοντα υπάρχουν εδώ.
  • Πληροφορίες για τη ρύθμιση και τη χρήση των unittest και pytest στο VS Code υπάρχουν εδώ.

PyCharm

Το PyCharm είναι ένα IDE (Ολοκληρωμένο Περιβάλλον Ανάπτυξης) που έχει φτιάξει η JetBrains. Είναι φτιαγμένο ειδικά για την Python και είναι δημοφιλές στους επαγγελματίες . Όπως το VS Code, μπορεί να επεκταθεί με διάφορα επί πληρωμή και δωρεάν πρόσθετα, θέματα και μορφοποιητές. Η επί πληρωμή έκδοση υποστηρίζει επίσης ανάπτυξη Django, ανάπτυξη με Docker και ενσωμάτωση βάσεων δεδομένων.

Pycharm και Pytest
  • Τα βήματα για τη ρύθμιση του pytest με το pycharm υπάρχουν εδώ.
  • Το Pycharm χρησιμοποιεί από προεπιλογή το unittest, οπότε πρέπει να έχεις εγκαταστήσει το pytest στο περιβάλλον που χρησιμοποιείς με το pycharm (δες τα έγγραφα για τον interpreter και το περιβάλλον παραπάνω) και μετά να δείξεις στο pycharm πού βρίσκεται.
  • Η εκτέλεση τεστ απευθείας από το GUI είναι πραγματικά εύκολη, αλλά μην ξεχάσεις να ρίξεις μια καλή ματιά στις υποκείμενες παραμέτρους του pytest, ώστε να το ρυθμίσεις όπως θέλεις.
  • Γενική τεκμηρίωση για την εκτέλεση τεστ και το debugging στο pycharm υπάρχει εδώ.
  • Πρόσθετα εργαλεία και οδηγίες για το debugging υπάρχουν εδώ.
    • προειδοποίηση: Το πρόσθετο coverage για το pytest θα χαλάσει τον debugger του pycharm. Δες το run/debug configuration: pytest για περισσότερες πληροφορίες.

Spyder IDE

Το Spyder είναι ένα δωρεάν IDE Python ανοιχτού κώδικα, cross-platform, φτιαγμένο για την επιστημονική κοινότητα. Συνήθως περιλαμβάνεται στη διανομή Anaconda της Python, αλλά μπορεί να εγκατασταθεί μόνο του και να χρησιμοποιηθεί με οποιαδήποτε έκδοση Python. Συνιστούμε μια αυτόνομη εγκατάσταση για μέγιστη ευελιξία και για να μην υπάρχουν συγκρούσεις πακέτων.

Το Spyder υποστηρίζει πλήρως περιβάλλοντα venv και conda. Περιλαμβάνει ένα ενσωματωμένο διαδραστικό τερματικό IPython, έναν διαδραστικό debugger και πλούσια υποστήριξη για γραφήματα και εξερεύνηση δεδομένων μέσα στον επεξεργαστή. Επιπλέον συμπλήρωση κώδικα και linting παρέχονται μέσω του kite. Ενσωματώσεις με Jupyter Notebooks και εργαλεία για τεστ παρέχονται μέσω πρόσθετων που αναπτύσσει η κοινότητα. Μπορείς επίσης να γράψεις δικά σου πρόσθετα, χρησιμοποιώντας το API του Spyder.


Emacs

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

  • Το Emacs Wiki έχει επίσης έναν καλό οδηγό για προγραμματισμό σε Python με το Emacs.
  • Το Full Stack Python συγκεντρώνει επίσης χρήσιμες πληροφορίες και συνδέσμους για να ξεκινήσεις με το Emacs.

Vim

Το Vim είναι μια δωρεάν και "βελτιωμένη" έκδοση του τυπικού επεξεργαστή κειμένου vi του Unix. Είναι διαθέσιμο σε μεγάλη ποικιλία λειτουργικών συστημάτων και εκδόσεων Linux/Unix. Ένας εξαιρετικός οδηγός εγκατάστασης και ρύθμισης είναι διαθέσιμος στο Real Python, και βολικά cheat sheets υπάρχουν στα vimsheet, glump και rtorr.

Ακόμη κι αν αποφασίσεις ότι η επεξεργασία κώδικα Python στο vim δεν είναι για σένα, συνιστάται να εξοικειωθείς με ένα βασικό σύνολο εντολών. Το vim ή το vi είναι συχνά ο "βασικός" ή "προεπιλεγμένος" επεξεργαστής κειμένου σε διανομές Linux και Unix και είναι ο προεπιλεγμένος επεξεργαστής για τα μηνύματα commit του git (μεταξύ άλλων) σε αυτά τα συστήματα. Είναι πολύ πιθανό να βρεθείς σε ένα σύστημα *nix να χρειάζεται να επεξεργαστείς ένα αρχείο ρυθμίσεων με μόνο το vi διαθέσιμο, οπότε το να ξέρεις πώς να βγεις από το vim είναι (τουλάχιστον) καλή αυτοάμυνα.


Spacemacs

Το Spacemacs (αποθετήριο στο github) είναι μια δωρεάν διανομή του Emacs, καθοδηγούμενη από την κοινότητα, που συνδυάζει λειτουργίες τόσο του Emacs όσο και του Vim.

  • Η επίσημη τεκμηρίωση βρίσκεται εδώ
  • Αυτός ο οδηγός στο opensource δίνει μια γρήγορη επισκόπηση των επιλογών εγκατάστασης και ρύθμισης.
  • Το python layer του spacemacs προσθέτει λειτουργίες για τεστ, linting, διαχείριση περιβαλλόντων και μορφοποίηση κώδικα.

Sublime text

Το Sublime text είναι ένας επί πληρωμή επεξεργαστής κειμένου για προγραμματισμό, από τη Sublime HQ Pty Ltd. Μοιάζει με το VS Code και το Atom, με πολλά πακέτα και πρόσθετα για προσαρμογή. Μπορείς επίσης να αναπτύξεις δικά σου πρόσθετα για τον επεξεργαστή, χρησιμοποιώντας Python.