| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| python [Le 02/07/2025, 08:48] – création §[Pixi] à compléter … ajout sources bcag2 | python [Le 29/01/2026, 13:10] (Version actuelle) – +tag vétuste (cf note pip3 et pipx sans quoi cette page est quasi inutile !) krodelabestiole |
|---|
| {{tag>programmation}} | {{tag>programmation vétuste}} |
| |
| ---- | {{ :python.png?130| Logo Python}} |
| | |
| {{ python.png?130nolink| Logo Python}} | |
| ====== Langage de programmation Python ====== | ====== Langage de programmation Python ====== |
| |
| [[wpfr>Python_(langage)|Python]] est un langage de programmation interprété, orienté objet, dont l'utilisation va des scripts systèmes aux applications web. \\ | **[[wpfr>Python_(langage)|Python]]** est un langage de programmation interprété, orienté objet, dont l'utilisation va des scripts systèmes aux applications web. |
| Il est régi par une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes. | Il est régi par une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes. |
| |
| ===== Programmer en Python ===== | Par défaut, **Python** est installé sur Ubuntu. Saisir ''[[man>python3]]'' dans un [[:terminal]] donne donc accès à l'invite de commande Python. Pour connaître votre version de Python installé, entrez ''python3 -V'' dans le [[:terminal]]. |
| | |
| | **Python** est aussi un écosystème modulaire, qui propose une importante quantité de bibliothèques dont peut dépendre chaque script. Celles-ci sont centralisées sur le dépôt [[https://pypi.org/|PyPI]] est peuvent être gérées avec ''[[man>pip3]]''. |
| | |
| | <note important> |
| | **Cependant** : |
| | |
| | Sur Ubuntu, **Python** est étroitement lié au système. Pour une utilisation avancée on évitera donc d'utiliser la version native, installée par défaut (donc la commande ''[[man>python3]]''), ou ''[[man>pip3]]'', son gestionnaire de dépendance associé. |
| | |
| | C'est là qu'intervient **[[https://github.com/pypa/pipx|pipx]]** (ou ses équivalents) :\\ |
| | **pipx** permet d'exécuter chaque script **Python** dans un environnement isolé, ce qui permet d'utiliser les versions de son choix avec les dépendances de son choix sans interférer avec le système (à la manière de //[[:docker|containers]]//, en plus simple). |
| | |
| | Pour lancer un script local incluant une dépendance avec ''[[man>pipx]]'', la commande sera par exemple : |
| | pipx run --spec dependence python3 script.py |
| | où ''dependence'' est une bibliothèque **Python** dont dépend ''script.py''. |
| | </note> |
| |
| Pour plus d'information sur la programmation en Python, référez-vous au portail [[:programmation#python|Programmation]]. \\ | <note>Pour plus d'information sur la programmation en Python, référez-vous au portail [[:programmation#python|Programmation]].</note> |
| Par défaut, Python est installé sur %%GNU/Linux%%. \\ Sous Ubuntu par exemple, saisir "python" dans un [[:terminal]] pour avoir accès à l'invite de commande Python. Pour connaître votre version de Python installé, tapez "python -V" dans le [[:terminal]]. | |
| |
| ==== Logiciel éditeur Python (IDE) ==== | ==== Logiciels éditeur Python (IDE) ==== |
| |
| Les logiciels pour éditer des scripts python : | Les logiciels pour éditer des scripts python : |
| | UliPad |**Y** | F |Y | Y |Y | | |Y |Y | | | |Y |Y | | | | | | UliPad |**Y** | F |Y | Y |Y | | |Y |Y | | | |Y |Y | | | | |
| | [[vim|Vim]] |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | |Y |Y |Y | | | | | | [[vim|Vim]] |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | |Y |Y |Y | | | | |
| | | [[visual_studio_code|VS Code/Codium]] | **Y**| F |Y | Y |Y |Y |Y |Y |Y |Y | |Y |Y |Y | | | [[https://code.visualstudio.com/docs/languages/python|module python pour codium/VSC]] | |
| | WingIde |**Y** | C |Y | Y*|Y |Y |Y |Y |Y |Y | |Y |Y |Y | | | |* support for C | | WingIde |**Y** | C |Y | Y*|Y |Y |Y |Y |Y |Y | |Y |Y |Y | | | |* support for C |
| | Zeus |W | C | | | | |Y |Y |Y |Y | |Y |Y | | | | | | | Zeus |W | C | | | | |Y |Y |Y |Y | |Y |Y | | | | | |
| |
| Acronymes: | Acronymes: |
| | * Y - Yes |
| * CP - Cross Platform — { multi-plateformes } | * CP - Cross Platform — { multi-plateformes } |
| * C - Commercial — { sous licence commerciale } | * C - Commercial — { sous licence commerciale } |
| * M - Mac | * M - Mac |
| ==== Logiciels de création d'interface graphique ==== | ==== Logiciels de création d'interface graphique ==== |
| Les logiciels pour créer des interfaces graphiques pour python: | Les logiciels et librairies pour créer des interfaces graphiques pour python: |
| * QT Creator pour des interfaces en QT | * Tkinter (librairie python) |
| | * QT Creator (logiciel) ou pyQT (librairie python) pour des interfaces en QT |
| |
| Terminal | |
| ===== Installation ===== | ===== Installation ===== |
| | |
| ==== Python 3 et Ubuntu ==== | ==== Python 3 et Ubuntu ==== |
| |
| === Ubuntu 18.04 et suivant === | Depuis Ubuntu [[:bionic|bionic 18.04]], **Python 3** est installé par défaut et est accessible via la commande ''[[man>python3]]''. |
| |
| Ubuntu [[:18.04]] est livrée avec //Python 3.6// par défaut, il suffit de taper ''python3'' pour l'invoquer.\\ | Actuellement, Ubuntu [[:noble|24.04]] est livrée avec **Python 3.12**. |
| Sous [[:focal]] c'est //Python 3.8//, accessible avec ''python'', python 2 n'étant plus installé par défaut !. | |
| | |
| ==== Python 2 ==== | |
| Python 2 est installé par défaut jusqu'à [[:Bionic]] (version 2.7), il suffit de taper ''python'' dans un terminal pour accéder à l'interpréteur. | |
| | |
| <note warning> Python 2.7 est en fin de vie depuis le 1er janvier 2020. Il est recommandé de passer à Python 3 car Python 2 n'est plus supporté. Une future version du PIP abandonnera la prise en charge de Python 2.7. Plus de détails sur le support de Python 2 dans PIP : https://PIP.PYPA.IO/fr/Latest/Development/release-process/#python-2-support </note> | |
| |
| ==== Les modules ==== | ==== Les modules ==== |
| | |
| Il faut souvent ajouter des modules (bibliothèques) à l'installation de base. Cela peut-être fait via les suites d'outils [[:python#anaconda]] ou [[:python#miniconda]] évoquées ci-dessous, mais si vous n'avez besoin que de quelques modules, il est possible de les ajouter avec le gestionnaire de paquets python [[wpfr>Pip_(gestionnaire_de_paquets)|PIP]], par exemple, pour installer le module PySerial (communication série) | Il faut souvent ajouter des modules (bibliothèques) à l'installation de base. Cela peut-être fait via les suites d'outils [[:python#anaconda]] ou [[:python#miniconda]] évoquées ci-dessous, mais si vous n'avez besoin que de quelques modules, il est possible de les ajouter avec le gestionnaire de paquets python [[wpfr>Pip_(gestionnaire_de_paquets)|PIP]], par exemple, pour installer le module PySerial (communication série) |
| <code bash>pip install pyserial</code> | <code bash>pip install pyserial</code> |
| <code bash>pip list</code> On peut ajouter l'option //--local// pour ne lister que ceux installés localement (dans //$USER/.local/bin//)\\ | <code bash>pip list</code> On peut ajouter l'option //--local// pour ne lister que ceux installés localement (dans //$USER/.local/bin//)\\ |
| Sans l'option ci-dessus, il y en a beaucoup, aussi un //pipe// avec grep peut être utile !<code bash>pip list | grep pyserial</code> | Sans l'option ci-dessus, il y en a beaucoup, aussi un //pipe// avec grep peut être utile !<code bash>pip list | grep pyserial</code> |
| ==== IDLE 3.6 ==== | |
| Pour installer IDLE en version //Python 3.6// (si on a déjà installé Python en 3.6), il suffit d'installer ''idle-python3.6'' et on l'exécute en utilisant ce même nom. | |
| |
| ==== iPython ==== | ==== IDLE 3 ==== |
| | Pour installer IDLE, il suffit d'installer ''idle-python3.xx'' où 3.xx est la version que l'on a de python et on l'exécute en utilisant ce même nom. |
| | |
| | ==== iPython/Jupyter ==== |
| |
| Voici les instructions pour installer iPython (dans une version récente) sous 16.04, avec ''pip'' : \\ | Voici les instructions pour installer [[wpfr>IPython]] et [[wpfr>Jupyter]] : |
| (la première ligne installe pip3) | |
| <code bash> | <code bash> |
| $ sudo apt install python3-pip | pip3 install jupyter |
| $ pip3 install --upgrade pip | pip3 install ipython |
| $ sudo pip3 install jupyter | |
| $ sudo pip3 install ipython | |
| </code> | </code> |
| |
| Il existe plusieurs alternatives, notamment :\\ | Il existe plusieurs alternatives, notamment :\\ |
| * Micromamba : https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html | * Micromamba : https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html |
| * Pixi : https://pixi.sh/latest/ | * Miniforge : installateur maintenu par conda-forge (communautaire) pour mamba/conda https://github.com/conda-forge/miniforge |
| | * [[#pixi|Pixi]] : https://pixi.sh/latest/ |
| |
| Pixi semble être la solution la plus ergonomique pour gérer des environnements conda sans Anaconda ni Miniconda. Pixi présente pas mal d'avantages (https://prefix.dev/blog/pixi_a_fast_conda_alternative) et est très orienté science (https://prefix.dev/blog/pixi_for_scientists) | Pixi semble être la solution la plus ergonomique pour gérer des environnements conda sans Anaconda ni Miniconda. Pixi présente pas mal d'avantages (https://prefix.dev/blog/pixi_a_fast_conda_alternative) et est très orienté science (https://prefix.dev/blog/pixi_for_scientists) |
| * [[hplip#mot_de_passe_root_demande|hplip]] | * [[hplip#mot_de_passe_root_demande|hplip]] |
| ==== Pixi ==== | ==== Pixi ==== |
| Avec [[https://pixi.sh|Pixi]], on peut complètement éviter de dépendre des serveurs de l'entreprise //Anaconda// et à la place dépendre des serveurs de //Prefix// (l'entreprise allemande derrière mamba et Pixi). | Avec [[https://pixi.sh|Pixi]]((sous licence BSD-3… [[https://github.com/prefix-dev/pixi/blob/main/LICENSE]] qui utilise //conda-forge// également sous BSD-3 [[https://github.com/conda-forge/conda-forge.github.io/blob/main/LICENSE]])) , on peut complètement éviter de dépendre des serveurs de l'entreprise //Anaconda// et à la place dépendre des serveurs de //Prefix// (l'entreprise allemande derrière mamba et Pixi). |
| |
| Pour l'installer : | Pour l'installer : |
| |
| Également basé sur le canal Anaconda. Les réserves exprimées ci-dessus sont donc également vraies pour Miniconda.\\ | Également basé sur le canal Anaconda. Les réserves exprimées ci-dessus sont donc également vraies pour Miniconda.\\ |
| [[miniconda|Miniconda]] permet de limiter le nombre de paquets ou de n'installer que le strict nécessaire. Ça n'installe que le gestionnaire de paquet //conda// | [[:Miniconda]] permet de limiter le nombre de paquets ou de n'installer que le strict nécessaire. Ça n'installe que le gestionnaire de paquet //conda// |
| |
| ===== Utilisation ===== | ===== Utilisation ===== |
| |
| ==== Debugger avec PDB ==== | ==== Debugger avec PDB ==== |
| | |
| <note warning>Si vous êtes débutant, vous préférerez sans doute l'utilisation d'un [[#logiciel_editeur_python_ide|IDE]] tel que spyder, eclipse, pycharm</note> | <note warning>Si vous êtes débutant, vous préférerez sans doute l'utilisation d'un [[#logiciel_editeur_python_ide|IDE]] tel que spyder, eclipse, pycharm</note> |
| [[https://docs.python.org/3/library/pdb.html|PDB]] est une solution de débuggage en ligne de commande similaire à [[:gdb|GDB]]\\ | [[https://docs.python.org/3/library/pdb.html|PDB]] est une solution de débuggage en ligne de commande similaire à [[:gdb|GDB]]\\ |
| Le //pdb.set_trace()// peut-être mis plus tard dans le code ! | Le //pdb.set_trace()// peut-être mis plus tard dans le code ! |
| |
| Pour débugger, lancer l'exécution de votre fichier: | |
| <code>python mon_script.py</code> | |
| ou dans [[:vim]]: | |
| <code>:!python %</code> | |
| Reportez-vous à la doc de [[:gdb|GDB]] ou à [[https://docs.python.org/3/library/pdb.html|la doc officielle]] pour débugger (point d'arrêt, raccourcis…) | Reportez-vous à la doc de [[:gdb|GDB]] ou à [[https://docs.python.org/3/library/pdb.html|la doc officielle]] pour débugger (point d'arrêt, raccourcis…) |
| |
| |
| ===== Logiciels liés à Python ===== | ===== Logiciels liés à Python ===== |
| |
| {{backlinks>.}} | {{backlinks>.}} |
| * [[wpfr>SageMath|SageMath (CAS)]] | |
| ===== Voir aussi ===== | ===== Voir aussi ===== |
| |
| * [[wpfr>Python_(langage)|Python sur wikipedia]] [fr] | * **(//en//)** [[https://www.python.org/|Site officiel]] |
| * [[https://www.afpy.org/|Association francophone Python]] [fr] | * [[wpfr>Python_(langage)|Python]] sur wikipedia |
| * [[http://wikipython.flibuste.net/|Wiki Python francophone]] [fr] | * [[https://www.afpy.org/|Association francophone Python]] |
| * [[https://www.python.org/|Site officiel]] [en] | * [[http://wikipython.flibuste.net/|Wiki Python francophone]] |
| * [[https://www.howopensource.com/2011/05/how-to-install-and-manage-different-versions-of-python-in-linux/|How to install and manage different versions of Python in Linux]] [en] | * //[[http://python.lycee.free.fr/|Débuter avec Python au lycée]]// |
| * [[http://python.lycee.free.fr/|Débuter avec Python au lycée]] [fr] | * [[https://frederic-lang.developpez.com/tutoriels/python/python-de-zero/|Tutoriel complet]] sur developpez.com |
| * [[https://frederic-lang.developpez.com/tutoriels/python/python-de-zero/|Tutoriel complet sur developpez.com]] [fr] | * //[[https://openclassrooms.com/en/courses/7168871-apprenez-les-bases-du-langage-python|Apprenez les bases du langage Python]]// sur OpenClassrooms |
| * [[https://www.fun-mooc.fr/courses/course-v1:UCA+107001+session01/about | MOOC python 3 Inria sur France Universités Numériques]] [fr] | * //[[http://www.jchr.be/python/manuel.htm|Introduction au langage Python3]]// |
| * [[https://openclassrooms.com/en/courses/7168871-apprenez-les-bases-du-langage-python]] [fr] | * [[https://inforef.be/swi/python.htm|Apprendre à programmer avec Python" - Gérard Swinnen]] librement téléchargeable à l'adresse [[https://inforef.be/swi/download/apprendre_python3_5.pdf]] (version janv. 2012) |
| * [[http://www.jchr.be/python/manuel.htm]] [fr] | * **(//en//)** [[https://python.swaroopch.com/]] |
| * [[https://inforef.be/swi/python.htm|Apprendre à programmer avec Python" - Gérard Swinnen]] [fr] librement téléchargeable à l'url: [[https://inforef.be/swi/download/apprendre_python3_5.pdf]] (version janv. 2012) | * **(//en//)** [[http://ipython.org/]] |
| * [[https://python.swaroopch.com/]] [en] | * **(//en//)** **[[https://github.com/exaloop/codon|Codon]]** ou comment compiler et accélérer du code python ! et sa [[https://docs.exaloop.io/codon|documentation]] |
| * [[http://ipython.org/]] | * **(//en//)** **[[https://docs.astral.sh/uv/|uv]]**, gestion de projets et de paquets. |
| * [[https://github.com/exaloop/codon|Codon]] [en] ou comment compiler et accélérer du code python ! et sa [[https://docs.exaloop.io/codon|documentation]] [en] | |
| * [[https://docs.astral.sh/uv/#highlights]] [en] gestion de projets et de paquets. | |
| --------- | |
| |
| //Contributeurs : [[:utilisateurs:draco31.fr|draco31.fr]]; Traduction des acronymes, correction grammaticale [[:utilisateurs:eagle08|René Stoecklin]]; [[:utilisateurs:bcag2]]// | ---- |
| | //Contributeurs : [[:utilisateurs:draco31.fr|draco31.fr]], [[:utilisateurs:eagle08|René Stoecklin]], [[:utilisateurs:bcag2]], [[:utilisateurs:krodelabestiole]].// |