| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| python [Le 03/03/2021, 17:22] – [Python 3 et Ubuntu] précision avec focal 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 : |
| | PIDA |**L**W| F |Y | Y | | | |Y |Y |Y | |Y | | | | | |VIM based | | PIDA |**L**W| F |Y | Y | | | |Y |Y |Y | |Y | | | | | |VIM based |
| | PTVS |W | F |Y | Y |Y |Y |Y |Y |Y |Y | |Y | | |Y* | | Y |*WPF bsed | | PTVS |W | F |Y | Y |Y |Y |Y |Y |Y |Y | |Y | | |Y* | | Y |*WPF bsed |
| | PyCharm |**Y** | C |Y | Y*|Y | |Y |Y |Y |Y | |Y | |Y | | | |* javascript | | [[:PyCharm]] |**Y** | C |Y | Y*|Y | |Y |Y |Y |Y | |Y | |Y | | | |* javascript |
| | PyDev([[eclipse|Eclipse]]) |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | Y |Y |Y |Y | | | | | | PyDev([[eclipse|Eclipse]]) |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | Y |Y |Y |Y | | | | |
| | Pyscripter |W | F |Y | |Y |Y | |Y | |Y | | |Y |Y | | | | | | Pyscripter |W | F |Y | |Y |Y | |Y | |Y | | |Y |Y | | | | |
| | 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 |
| |
| ===== Installation ===== | ===== Installation ===== |
| ==== Python 2 ==== | |
| Python 2 est installé par défaut, il suffit de taper ''python'' dans un terminal pour accéder à l'interpréteur. \\ Pour Bionic 18.04, c'est la version 2.7 qui est installée. | |
| |
| <note warning>DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. \\ Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. | |
| |
| More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support</note> | |
| |
| ==== 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 !. | |
| |
| === Ubuntu 16.04 === | ==== Les modules ==== |
| |
| La dernière version (3.6) n'est pas dans les dépots de la dernière LTS 16.04. \\ La version 3.6 comporte des différences significatives par rapport à la version précédente (entre autres avec les F String) et peut être nécessaire. | 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> |
| | Pour lister les modules installés : |
| | <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> |
| |
| Pour installer Python 3.6 avec Ubuntu 16.04, il faut ajouter un ppa : | ==== IDLE 3 ==== |
| * soit ''jonathonf/python-3.6'' | 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. |
| * soit ''deadsnakes/ppa'' | |
| |
| Puis on installe Python 3.6. | ==== iPython/Jupyter ==== |
| | |
| Les commandes complètes avec, par exemple, //jonathon// ppa : | |
| |
| | Voici les instructions pour installer [[wpfr>IPython]] et [[wpfr>Jupyter]] : |
| <code bash> | <code bash> |
| $ sudo add-apt-repository ppa:jonathonf/python-3.6 | pip3 install jupyter |
| $ sudo apt update | pip3 install ipython |
| $ sudo apt install python3.6 | |
| </code> | </code> |
| |
| Pour invoquer l'interpréteur, il faut taper ''python3'' ou ''python3.6'' ! | ==== Anaconda ==== |
| ==== IDLE 3.6 ==== | <note warning>La société Anaconda a fait des changements de licences qui peuvent entraîner la nécessité de payer pour accéder à certaines librairies.\\ |
| 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. | Il existe plusieurs alternatives, notamment :\\ |
| | * Micromamba : https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html |
| | * Miniforge : installateur maintenu par conda-forge (communautaire) pour mamba/conda https://github.com/conda-forge/miniforge |
| | * [[#pixi|Pixi]] : https://pixi.sh/latest/ |
| |
| ==== iPython ==== | 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) |
| |
| Voici les instructions pour installer iPython (dans une version récente) sous 16.04, avec ''pip'' : \\ | Enfin, il faut surtout désactiver le canal "defaults" des environnements conda en mettant "nodefaults" à la place (par exemple : https://github.com/pierrepo/env-logiciels-bioinfo/blob/main/cours/rnaseq.yml). En effet, conda va toujours utiliser ce canal "defaults" qui appartient à Anaconda.</note> |
| (la première ligne installe pip3) | |
| <code bash> | |
| $ sudo apt install python3-pip | |
| $ pip3 install --upgrade pip | |
| $ sudo pip3 install jupyter | |
| $ sudo pip3 install ipython | |
| </code> | |
| | |
| ==== Anaconda ==== | |
| Anaconda est une suite d'outils (plus de 200 paquets et plus de 500Mo) allant de l'éditeur [[:spyder|Spyder]] au framework [[:qt|Qt]] et [[:pyqt|PyQt]], en passant par [[https://jupyter.org/|jupyter]] pour les notebook, et de nombreuses librairies de programmation, //pip// et //pep8//…\\ | Anaconda est une suite d'outils (plus de 200 paquets et plus de 500Mo) allant de l'éditeur [[:spyder|Spyder]] au framework [[:qt|Qt]] et [[:pyqt|PyQt]], en passant par [[https://jupyter.org/|jupyter]] pour les notebook, et de nombreuses librairies de programmation, //pip// et //pep8//…\\ |
| Pour l'installer, reportez-vous à la page dédiée sur le site officiel:\\ | Pour l'installer, reportez-vous à la page dédiée sur le site officiel:\\ |
| |
| * [[hplip#mot_de_passe_root_demande|hplip]] | * [[hplip#mot_de_passe_root_demande|hplip]] |
| | ==== 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 : |
| | <code bash> |
| | curl -fsSL https://pixi.sh/install.sh | sh |
| | # ou avec wget : |
| | wget -qO- https://pixi.sh/install.sh | sh |
| | </code> |
| | Facile à mettre à jour en relançant l'installation ou |
| | <code bash> |
| | pixi self-update |
| | </code> |
| | |
| ==== Miniconda ==== | ==== Miniconda ==== |
| Pour limiter le nombre de paquets ou n'installer que le nécessaire, il existe aussi [[miniconda|Miniconda]] qui n'installe que le gestionnaire de paquet //conda// | |
| | Également basé sur le canal Anaconda. Les réserves exprimées ci-dessus sont donc également vraies pour 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// |
| |
| ===== 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]] |
| * [[http://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]] |
| * [[http://www.python.org/|Site officiel]] [en] | * [[http://wikipython.flibuste.net/|Wiki Python francophone]] |
| * [[http://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://www.fun-mooc.fr/courses/course-v1:UCA+107001+session01/about | MOOC python 3 Inria sur France Universités Numériques]] [fr] | * //[[https://openclassrooms.com/en/courses/7168871-apprenez-les-bases-du-langage-python|Apprenez les bases du langage Python]]// sur OpenClassrooms |
| * [[http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-python]] [fr] | * //[[http://www.jchr.be/python/manuel.htm|Introduction au langage Python3]]// |
| * [[http://www.jchr.be/python/manuel.htm]] [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://inforef.be/swi/python.htm|Apprendre à programmer avec Python" - Gérard Swinnen]] [fr] librement téléchargeable à l'url: [[http://inforef.be/swi/download/apprendre_python3_5.pdf]] (version janv. 2012) | * **(//en//)** [[https://python.swaroopch.com/]] |
| * [[http://www.swaroopch.com/notes/python/]] [en] | * **(//en//)** [[http://ipython.org/]] |
| * [[http://www.esi.umontreal.ca/~mousseau/phy1234/notes/notes_1.html]] [fr] | * **(//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. |
| --------- | |
| |
| //Date de création : 25 juin 2010.[[:utilisateurs:draco31.fr|draco31.fr]]; | ---- |
| Traduction des acronymes, correction grammaticale [[:utilisateurs:eagle08|René Stoecklin]];// | //Contributeurs : [[:utilisateurs:draco31.fr|draco31.fr]], [[:utilisateurs:eagle08|René Stoecklin]], [[:utilisateurs:bcag2]], [[:utilisateurs:krodelabestiole]].// |