Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
python [Le 29/09/2023, 11:26] – [Les modules] pour les lister, suppr note Bionic obsolète bcag2python [Le 26/07/2026, 02:24] (Version actuelle) – réorganisation krodelabestiole
Ligne 1: Ligne 1:
 {{tag>programmation}} {{tag>programmation}}
  
----- +{{ https://raw.githubusercontent.com/python/cpython/refs/heads/main/PC/icons/logo.svg?96|Logo de 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 [[wpfr>Interprète_(informatique)|interprété]][[wpfr>Programmation_orientée_objet|orienté objet]]qui permet de développer toutes sortes de projets, de scripts simples aux [[:web#applications web]]. Il est en outre utilisé par de nombreux outils [[:système]] d'Ubuntu.
-Il est régi par une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes.+
  
-===== Programmer en Python =====+Il est [[wpfr>logiciel libre|libre]] et fonctionne sur la plupart des plateformes.
  
-Pour plus d'information sur la programmation en Python, référez-vous au portail [[:programmation#python|Programmation]]. \\ +**Python** est installé par défaut sur Ubuntu. Saisir ''[[man>python3]]'' dans un [[:terminal]] donne donc accès à l'invite de commande Python.\\  
-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]]. +Pour connaître la version installéeentrer la [[:commande shell|commande]] ''python3 -V''.
  
-==== Logiciel éditeur Python (IDE)  ====+**Python** est très populaire. Il est donc aussi devenu un immense écosystème modulaire, composé d'une importante quantité de bibliothèques, dont peut dépendre tout projet. Celles-ci sont centralisées sur le dépôt [[https://pypi.org/|PyPI]] est peuvent être gérées avec ''[[#pip3]]''.
  
-Les logiciels pour éditer des scripts python : +<note> 
-  +Pour plus d'information sur la programmation en Python, voir le portail //[[:programmation#python|Programmation]]//. 
-^Nom^Cross Platform^Commercial ou Free^Auto Code Completion^Multi-Language Support^Integrated Python Debugging^Error Markup^Source Control Integration^Smart Indent^Bracket Matching^Line Numbering^UML Editing or Viewing^Code Folding^Code Templates ^Unit Testing^GUI Designer^Integrated DB Support ^ Rapid Application Development^ +</note>
-^Nom^CP^C/F^AC^MLS^PD^EM^SC^SI^BM^LN^UML^CF^CT^UT^UID^DB^RAD^comments^ +
-|BlackAdder |**Y** | C | | | | | |Y | | | |Y | | | | | | | +
-|[[bluefish|BlueFish]] |**L** | | | | | | | | | | | | | | | | | +
-|Boa Constructor|**Y** | F |Y | |Y |Y | |Y |Y |Y | Y |Y |Y | | | | | +
-| ConTEXT |W | C | | | | | | | | | | | | | | | | +
-|DABO |**Y** | | | | | | | | | | | | | | | | | +
-| DreamPie | | F | | | | | | | | | | | | | | | | +
-|Dr.Python | | F | | | |Y | | | | | | | | | | | | | +
-|Editra |**Y** | F |Y | Y | | |Y |Y |Y |Y | |Y | | | | | | +
-|[[emacs|Emacs]] |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | Y |Y |Y |Y | | | | +
-|[[eric|Eric Ide]] |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y¹ |Y² | |¹QtDesigner ²Navigateur SQL intégré| +
-|E-Texteditor |W | | | | | | | | | | | | | | | | | +
-|[[geany|Geany]] |**Y** | F |Y*| Y | | | |Y |Y |Y | |Y | | | | | |* very limited| +
-|[[gedit|Gedit]] |**Y** | F |Y¹| Y | | | |Y |Y |Y | | |Y²| | | | |¹ with plugin ² sort of| +
-| [[idle|Idle]]           |**Y** | F |Y |    |  |  |  |  |  |    |  |  |    |   | +
-| [[jedit|JEdit]]          |**Y** | F |  | Y |  |  |  |  |Y |Y |   |Y |  |  |    |   | +
-| [[kdevelop|KDevelop]]       |**Y** | F |  | Y |  |  |Y |Y |Y |Y |   |Y |  |  |    |   | +
-^Nom^CP^C/F^AC^MLS^PD^EM^SC^SI^BM^LN^UML^CF^CT^UT^UID^DB^RAD^comments^ +
-| [[komodo_edit|Komodo]]         |**Y** |C/F|Y | Y |Y |Y |Y |Y |Y |Y |   |Y |Y |Y |   |Y |   | +
-| [[netbeans|NetBeans]]       |**Y** | F |Y | Y |Y |  |Y |Y |Y |Y | Y |Y |Y |Y |    | Y | +
-| NotePad++      |W | F |  | Y |  |  |  |  |  |Y |    |  |  |    |   | +
-| Pfaide         |W | C |Y | Y |  |  |  |Y |Y |Y |   |Y |Y |  |    |   | +
-| 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 +
-[[: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 |    |   | +
-| Pyscripter     |W | F |Y |   |Y |Y |  |Y |  |Y |    |Y |Y |    |   | +
-| PythonWin      |W | F |Y |   |Y |  |  |Y |Y |  |   |Y |  |  |    |   | +
-| [[scite|SciTE]]          |**Y** | F |  | Y |  |Y |  |  |Y |Y |   |Y |Y |  |    |   | +
-| ScriptDev      |W | C |Y | Y |Y |Y |  |Y |Y |Y |   |Y |Y |  |    |   | +
-| SPE            |  | F |Y |    |  |  |  |  |  | Y |  |  |  |    |   | +
-| [[spyder|Spyder/spyderlib]]         |**Y** | F |Y |   |Y |Y |  |Y |Y |Y |    |  |  |    |   | +
-| [[sublime-text|Sublime Text]]   |**Y** | C |Y | Y |  |  |  |Y |Y |Y |    |Y |  |    |   |extensible w/python +
-| TextMate       |M |    | 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 |    |   | +
-| 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 |  |    |   | +
-^Nom^CP^C/F^AC^MLS^PD^EM^SC^SI^BM^LN^UML^CF^CT^UT^UID^DB^RAD^comments^+
  
-Acronymes: +===== Environnements virtuels/isolés =====
-  *     CP - Cross Platform — { multi-plateformes } +
-  *     C - Commercial — { sous licence commerciale } +
-  *     F - Free — { sous licence gratuite } +
-  *     AC - Automatic Code-completion — { finalisation automatique du code } +
-  *     MLS - Multi-Language Support — { intégration multilingue } +
-  *     PD - Integrated Python Debugging { interface de débogage du code Python intégrée } +
-  *     EM - ErrorMarkup — { procédure de balisage d'erreurs } +
-  *     SC - Source Control integration — { procédure de contrôle du code source intégrée } +
-  *     SI - Smart Indent — { formatage intelligent du code source } +
-  *     BM - Bracket Matching — { fermeture automatique des différentes parenthèses } +
-  *     LN - Line Numbering — { numérotation automatique des lignes de code } +
-  *     UML - UML editing / viewing — { édition et visualisation du langage unifié de modélisation graphique } +
-  *     CF - Code Folding — { procédure de repli synthétique du code source } +
-  *     CT - Code Templates — { modélisation/prototypage du code source } +
-  *     UT - Unit Testing — { tests des unités de commandes } +
-  *     UID - GUI Designer (for example, Qt, Eric, ..) — { module de conception des interfaces graphiques dédiées à l'utilisateur } +
-  *     DB - integrated database support — { intégration et gestion des bases de données } +
-  *     RAD - Rapid application development support — { gestion de la modélisation/du développement accélérés des applications } +
-  *     L - Linux +
-  *     W - Windows +
-  *     M - Mac +
-==== Logiciels de création d'interface graphique ==== +
-Les logiciels pour créer des interfaces graphiques pour python: +
-  * QT Creator pour des interfaces en QT+
  
-Terminal  +Sur Ubuntu, **Python** est étroitement lié au [[:système]] : il est utilisé par de nombreux outils fournissant des fonctionnalités essentielles à l'ordinateur. Pour une utilisation avancéemieux vaut donc éviter d'utiliser la version native, installée par défaut (donc la commande ''[[man>python3]]''), ou ''[[#pip3]]'', son gestionnaire de dépendances associé.
-===== 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.04c'est la version 2.7 qui est installée.+
  
-<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>+C'est là qu'interviennent différentes solutions pour initier et gérer des environnements virtuels (ou isolés) et 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) Certaines se présentent directement sous la forme de [[#gestionnaires de dépendances]].
  
-==== Python 3 et Ubuntu ====+==== venv ====
  
-=== Ubuntu 18.04 et suivant ===+**[[:tutoriel:python-virtualenv|virtualenv]]** est la solution de base, fournie par l'écosystème Python.
  
-Ubuntu [[:18.04]] est livrée avec //Python 3.6// par défaut, il suffit de taper ''python3'' pour l'invoquer.\\ +===== Gestionnaires de dépendances =====
-Sous [[:focal]] c'est //Python 3.8//, accessible avec ''python'', python 2 n'étant plus installé par défaut !. +
  
-=== Ubuntu 16.04 ===+Un [[:gestionnaire_de_paquets|gestionnaire de dépendance]] permet d'installer, mettre à jour, ou désinstaller des bibliothèques logicielles, à la manière des [[:paquet|paquets]] d'[[:APT]]**Python** permet de plus de spécifier dans chaque projet les bibliothèques dont celui-ci dépend.\\ 
 +Le gestionnaire le plus couramment utilisé est **[[wpfr>Pip_(gestionnaire_de_paquets)|pip]]**, ou désormais plus exactement **pip3** :
  
-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.+==== pip3 ====
  
-Pour installer Python 3.6 avec Ubuntu 16.04, il faut ajouter un ppa : +**[[wpfr>Pip_(gestionnaire_de_paquets)|pip3]]** permet de gérer l'installation de dépendances **Python** depuis le dépôt [[https://pypi.org/|PyPI]]), ainsi que leur mise à jour ou leur désinstallation.
-  * soit  ''jonathonf/python-3.6'' +
-  * soit ''deadsnakes/ppa''+
  
-Puis on installe Python 3.6.+Il est installé par défaut sur UbuntuIl est fournit par le [[:paquet]] ''[[apt>python3-pip]]''.
  
-Les commandes complètes avecpar exemple, //jonathon// ppa :+On peut l'utiliser avec la commande ''[[man>pip3]]''
 +  pip3 --help 
 +permet d'afficher la liste et la description des sous-commandes disponibles.\\ 
 +La sous-commande ''[[man>pip3-install|install]]'' permet par exemple d'installer une dépendance.
  
 +<note>Pour la gestion des dépendances avec **pip**, voir le chapitre //[[#Modules/dépendances]]// ci-dessous.</note>
 +
 +==== PipX ====
 +
 +**[[https://github.com/pypa/pipx|PipX]]** permet de remplacer [[https://pypi.org/project/pip/|pip]], en installant les dépendances de son choix, mais cette fois dans l'environnement de son choix (la version de Python), et de manière très simple.
 +
 +Pour utiliser **PipX**, [[:deb#installer un paquet deb|installer le paquet]] ''[[apt>pipx]]''.
 +
 +Pour lancer un script local incluant une dépendance avec ''[[man>pipx]]'', la commande sera par exemple :
 +<code bash>pipx run --spec dependence python3 script.py</code>
 +où ''dependence'' est une bibliothèque **Python** dont dépend ''script.py''.
 +
 +En dehors de ces fonctionnalités spécifiques, ''[[man>pipx]]'' s'utilise de manière relativement similaire à ''[[man>pip3]]''.
 +
 +==== Pixi ====
 +
 +**[[https://pixi.prefix.dev/latest/|Pixi]]** est un autre gestionnaire de dépendances très répandu, qui gère d'autres langages que le Python.
 +
 +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> <code bash>
-$ sudo add-apt-repository ppa:jonathonf/python-3.6 +pixi self-update
-$ sudo apt update +
-$ sudo apt install python3.6 +
 </code> </code>
  
-Pour invoquer l'interpréteur, il faut taper ''python3'' ou ''python3.6'' !+==== uv ====
  
-==== Les modules ==== +**[[https://docs.astral.sh/uv/|uv]]**((dont la société, Astral a été racheté par OpenAI en mars 2026 !)) est aussi un gestionnaire de dépendance très répandu, rapide (développé en [[wpfr>Rust_(langage)|Rust]]). 
-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)+ 
 +===== Applications ===== 
 + 
 +==== Éditeurs Python ==== 
 + 
 +Les applications ([[:IDE]]) pour éditer des scripts Python : 
 +  
 +^Nom^Cross Platform^Commercial ou Free^Auto Code Completion^Multi-Language Support^Integrated Python Debugging^Error Markup^Source Control Integration^Smart Indent^Bracket Matching^Line Numbering^UML Editing or Viewing^Code Folding^Code Templates ^Unit Testing^GUI Designer^Integrated DB Support ^ Rapid Application Development^ 
 +^ Nom                ^CP    ^C/F^AC^MLS^PD^EM^SC^SI^BM^LN^UML^CF^CT^UT^UID^DB^RAD^comments^ 
 +| BlackAdder         |**Y** | C |  |    |  |  |Y |  |  |   |Y |  |  |    |          | 
 +| [[:BlueFish]]      |**L** |    |    |  |  |  |  |  |    |  |  |    |          | 
 +| Boa Constructor    |**Y** | F |Y |   |Y |Y |  |Y |Y |Y | Y |Y |Y |  |    |          | 
 +| ConTEXT            |W     | C |  |    |  |  |  |  |  |    |  |  |    |          | 
 +| DABO               |**Y** |    |    |  |  |  |  |  |    |  |  |    |          | 
 +| DreamPie                | F |  |    |  |  |  |  |  |    |  |  |    |          | 
 +| Dr.Python          |      | F |  |    |Y |  |  |  |  |    |  |  |    |          | 
 +| Editra             |**Y** | F |Y | Y |  |  |Y |Y |Y |Y |   |Y |  |  |    |          | 
 +| [[:Emacs]]         |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | Y |Y |Y |Y |    |          | 
 +| [[:eric|Eric Ide]] |**Y** | F |Y | Y |Y |Y |Y |Y |Y |Y | Y |Y |Y |Y |Y¹ |Y²|   |¹QtDesigner ²Navigateur SQL intégré| 
 +| E-Texteditor       |W        |    |  |  |  |  |  |    |  |  |    |          | 
 +| [[:Geany]]         |**Y** | F |Y*| Y |  |  |  |Y |Y |Y |   |Y |  |  |    |   |*très limité| 
 +| [[:Gedit]]         |**Y** | F |Y¹| Y |  |  |  |Y |Y |Y |    |Y²|  |    |   |¹avec extension ²plus ou moins| 
 +| [[:Idle]]          |**Y** | F |Y |    |  |  |  |  |  |    |  |  |    |          | 
 +| [[:JEdit]]         |**Y** | F |  | Y |  |  |  |  |Y |Y |   |Y |  |  |    |          | 
 +| [[:KDevelop]]      |**Y** | F |  | Y |  |  |Y |Y |Y |Y |   |Y |  |  |    |          | 
 +^ Nom                ^CP    ^C/F^AC^MLS^PD^EM^SC^SI^BM^LN^UML^CF^CT^UT^UID^DB^RAD^comments^ 
 +| [[:komodo_edit|Komodo]]|**Y**|C/F|Y|Y|Y |Y |Y |Y |Y |Y |   |Y |Y |Y |   |Y |          | 
 +| [[:NetBeans]]      |**Y** | F |Y | Y |Y |  |Y |Y |Y |Y | Y |Y |Y |Y |    | Y |        | 
 +| NotePad++          |W     | F |  | Y |  |  |  |  |  |Y |    |  |  |    |          | 
 +| Pfaide             |W     | C |Y | Y |  |  |  |Y |Y |Y |   |Y |Y |  |    |          | 
 +| PIDA               |**L**W| F |Y | Y |  |  |  |Y |Y |Y |   |Y |  |  |    |   |basé sur [[:VIM]]| 
 +| PTVS               |W     | F |Y | Y |Y |Y |Y |Y |Y |Y |   |Y |  |  |Y* |  | Y |*basé sur WPF| 
 +| [[:PyCharm]]       |**Y** | C |Y | Y*|Y |  |Y |Y |Y |Y |   |Y |  |Y |    |   |*JavaScript| 
 +| PyDev([[: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 |    |          | 
 +| PythonWin          |W     | F |Y |   |Y |  |  |Y |Y |  |   |Y |  |  |    |          | 
 +| [[:SciTE]]         |**Y** | F |  | Y |  |Y |  |  |Y |Y |   |Y |Y |  |    |          | 
 +| ScriptDev          |W     | C |Y | Y |Y |Y |  |Y |Y |Y |   |Y |Y |  |    |          | 
 +| SPE                |      | F |Y |    |  |  |  |  |  | Y |  |  |  |    |          | 
 +| [[:spyder|Spyder/spyderlib]]|**Y**|F|Y||Y|Y|  |Y |Y |Y |    |  |  |    |          | 
 +| [[:sublime-text|Sublime Text]]|**Y**|C|Y|Y||| |Y |Y |Y |    |Y |  |    |   |extension Python| 
 +| TextMate           |M        | Y |  |  |  |Y |Y |Y |   |Y |Y |  |    |          | 
 +| UliPad             |**Y** | F |Y | Y |Y |  |  |Y |Y |  |    |Y |Y |    |          | 
 +| [[: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 de C 
 +| Zeus               |W     | C |  |    |  |Y |Y |Y |Y |   |Y |Y |  |    |   | 
 +^ Nom                ^CP    ^C/F^AC^MLS^PD^EM^SC^SI^BM^LN^UML^CF^CT^UT^UID^DB^RAD^comments^ 
 + 
 +Acronymes: 
 +  * Y - Yes 
 +  * CP - Cross Platform — { multi-plateformes } 
 +  * C - Commercial — { sous licence commerciale } 
 +  * F - Free — { sous licence gratuite } 
 +  * AC - Automatic Code-completion — { finalisation automatique du code } 
 +  * MLS - Multi-Language Support — { intégration multilingue } 
 +  * PD - Integrated Python Debugging { interface de débogage du code Python intégrée } 
 +  * EM - ErrorMarkup — { procédure de balisage d'erreurs } 
 +  * SC - Source Control integration — { procédure de contrôle du code source intégrée } 
 +  * SI - Smart Indent — { formatage intelligent du code source } 
 +  * BM - Bracket Matching — { fermeture automatique des différentes parenthèses } 
 +  * LN - Line Numbering — { numérotation automatique des lignes de code } 
 +  * UML - UML editing / viewing — { édition et visualisation du langage unifié de modélisation graphique } 
 +  * CF - Code Folding — { procédure de repli synthétique du code source } 
 +  * CT - Code Templates — { modélisation/prototypage du code source } 
 +  * UT - Unit Testing — { tests des unités de commandes } 
 +  * UID - GUI Designer (for example, Qt, Eric, ..) — { module de conception des interfaces graphiques dédiées à l'utilisateur } 
 +  * DB - integrated database support — { intégration et gestion des bases de données } 
 +  * RAD - Rapid application development support — { gestion de la modélisation/du développement accélérés des applications } 
 +  * L - Linux 
 +  * W - Windows 
 +  * M - Mac 
 + 
 +==== Logiciels de création d'interface graphique ==== 
 + 
 +Les applications et librairies pour créer des interfaces graphiques pour python : 
 +  * Tkinter (librairie python) 
 +  * QT Creator (logiciel) ou pyQT (librairie python) pour des interfaces en QT 
 + 
 +===== Installation ===== 
 + 
 +==== Python 3 et Ubuntu ==== 
 + 
 +Depuis Ubuntu [[:bionic|bionic 18.04]], **Python 3** est installé par défaut et est accessible via la commande ''[[man>python3]]''
 + 
 +Actuellement, Ubuntu [[:noble|24.04]] est livrée avec **Python 3.12**. 
 + 
 +==== Modules/dépendances ==== 
 + 
 +Il est souvent utile ou nécessaire d'ajouter des modules (bibliothèques) à l'installation de base. Ceci 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 dépendances Python [[#pip]] (commandes ''[[man>pip]]'' ou ''[[man>pip3]]'' qui utilisent le dépôt [[https://pypi.org/|PyPI]])
 + 
 +Pour installer (sous-commande ''[[man>pip3-install|install]]''par exemple le module [[https://pypi.org/project/pyserial/|pyserial]] (communication série) :
 <code bash>pip install pyserial</code> <code bash>pip install pyserial</code>
-Pour lister les modules installés : +Pour lister (sous-commande ''[[man>pip3-list|list]]''les modules installés : 
-<code bash>pip list</code> +<code bash>pip list</code> On peut ajouter l'option ''%%--%%local'' pour ne lister que ceux installés localement (dans le répertoire des [[:arborescence#binaires personnels]] ''[[:arborescence#binaires_personnels|$USER/.local/bin]]'').\\ 
-Il y en a beaucoupaussi un //pipe// avec grep peut être utile !<code bash>pip list | grep pyserial</code> +Sans cetteoptionla liste est longue. Un //[[:pipe]]// avec ''[[man>grep]]'' peut donc s'avérer 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 ====+Les dépendances (modules et autres métadonnées) peuvent être définies dans un fichier  
 +  * ''requirements.txt # qu'on installe avec : pip install -r requirement.txt'' 
 +ou mieux encore dans un fichier  
 +  * ''pyproject.toml'' ((défini dans la [[https://peps.python.org/pep-0621/|PEP-0621]], cf. [[https://packaging.python.org/en/latest/specifications/pyproject-toml/]])) qui permet de définir des sections (''debug'', ''dev''…) et des métadonnées.
  
-Voici les instructions pour installer iPython (dans une version récente) sous 16.04avec ''pip'' : \\ +==== IDLE 3 ==== 
-(la première ligne installe pip3)+ 
 +Pour installer IDLEil 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 [[wpfr>IPython]] et [[:jupyter|Jupyter (page dédiée à cet outils)]] :
 <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>
  
 ==== Anaconda ==== ==== Anaconda ====
 +
 +<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.\\
 +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/
 +
 +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)
 +
 +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>
 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:\\
Ligne 149: Ligne 211:
  
     * [[hplip#mot_de_passe_root_demande|hplip]]     * [[hplip#mot_de_passe_root_demande|hplip]]
 +
 ==== 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 =====
-De nombreuses ressources sont disponibles sur le web pour apprendre à programmer en Python, reportez-vous aux [[#voir_aussi|liens de cette page]] 
  
-==== Debugger avec PDB ==== +L'utilisation de Python dépend évidemment de la ressource choisie ([[wpfr>Python_(langage)#Distributions|distribution]], [[#Environnements virtuels/isolés|virtualisation]]...).
-<note warning>Si vous êtes débutant, vous préférerez sans doute l'utilisation d'un [[#logiciel_editeur_python_ide|IDE]] tel que spydereclipse, pycharm</note> +
-[[https://docs.python.org/3/library/pdb.html|PDB]] est une solution de débuggage en ligne de commande similaire à [[:gdb|GDB]]\\ +
-Pour pouvoir l'utiliser, il suffit d'ajouter en début de votre fichier python la ligne: +
-<code>import pdb; pdb.set_trace(  # pour débugger… en ligne de commande !-) </code> +
-Le //pdb.set_trace()// peut-être mis plus tard dans le code !+
  
-Pour débuggerlancer l'exécution de votre fichier: +De nombreuses ressources sont disponibles sur le web pour apprendre à programmer en Pythonreportez-vous aux [[#voir_aussi|liens de cette page]].
-<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…)+
  
 +==== Débugger avec PDB ====
  
-===== Logiciels liés à Python =====+<note tip> 
 +Si vous êtes débutant, vous préférerez sans doute l'utilisation d'un [[#logiciel_editeur_python_ide|IDE]] tel que spyder, eclipse, ou pycharm. 
 +</note>
  
-Voici la liste des pages de la documentation présentant les logiciels liés au langage Python :+[[https://docs.python.org/3/library/pdb.html|PDB]] est une solution de débuggage en ligne de commande similaire à [[:GDB]]. 
 + 
 +Pour pouvoir l'utiliser, il suffit d'ajouter en début de votre fichier python la ligne : 
 +<code>import pdb; pdb.set_trace()   # pour débugger… en ligne de commande !-) </code> 
 +Le ''pdb.set_trace()'' peut-être mis plus tard dans le code ! 
 + 
 +Reportez-vous à la doc de [[:GDB]] ou à [[https://docs.python.org/3/library/pdb.html|la documentation officielle]] pour débugger  (point d'arrêt, raccourcis…).
  
-{{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://github.com/python/cpython|GitHub]] 
-  * [[https://www.python.org/|Site officiel]] [en+  * [[https://www.afpy.org/|Association francophone Python]] 
-  * [[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://wikipython.flibuste.net/|Wiki Python francophone]] 
-  * [[http://python.lycee.free.fr/|Débuter avec Python au lycée]] [fr] +  * //[[http://python.lycee.free.fr/|Débuter avec Python au lycée]]// 
-  * [[https://frederic-lang.developpez.com/tutoriels/python/python-de-zero/|Tutoriel complet sur developpez.com]] [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 
-  * [[https://openclassrooms.com/en/courses/7168871-apprenez-les-bases-du-langage-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) 
-  * [[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//)** [[https://python.swaroopch.com/]] 
-  * [[https://python.swaroopch.com/]] [en+  * **(//en//)** [[http://ipython.org/]] 
-  * [[http://ipython.org/]] +  * **(//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]] 
-  * [[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] +  * **(//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]]+==== Pages liées à Python ==== 
-Traduction des acronymescorrection grammaticale [[:utilisateurs:eagle08|René Stoecklin]];//+ 
 +Voici la liste des pages de la documentation présentant les logiciels liés au langage Python : 
 + 
 +{{backlinks>.#!utilisateurs:}} 
 + 
 +---- 
 +//[[:Contributeurs]] : [[:utilisateurs:draco31.fr|draco31.fr]], [[:utilisateurs:eagle08|René Stoecklin]], [[:utilisateurs:bcag2]], [[:utilisateurs:krodelabestiole]].//