Outils de l'écosystème Python
Outils intégrés à Python
Démarrage rapide d'un serveur de téléchargement
Pour partager rapidement des fichiers depuis un répertoire, Python offre un module intégré qui lance un serveur HTTP. Dans Python 2, utilisez la commande python -m SimpleHTTPServer. Avec Python 3, la commande devient python -m http.server. Après exécution, le serveur démarre sur le port 8000 par défaut, permettant aux collègues d'accéder aux fichiers via l'adresse IP et le port. Si un fichier nommé index.html est présent, il sera affiché par défaut ; sinon, une liste des fichiers du répertoire s'affiche.
Conversion de chaînes JSON
Pour analyser des chaînes JSON provenant de journaux système, utilisez l'outil en ligne de commande json.tool. Exemple :
echo '{"metier":"developpeur","nom":"alice"}' | python -m json.tool
Cet outil fromatte automatiquement le JSON pour une meilleure lisibilité, en alignant les données et en gérant les structures complexes.
Utilisation avancée de pip
Commandes courantes de pip
pip gère les paquets Python avec des sous-commandes essentielles. Pour installer pip manuellement, téléchargez-le depuis PyPI, extrayez l'archive, et exécutez python setup.py install. Des erreurs peuvent survenir si setuptools manque ; dans ce cas, installez setuptools d'abord.
Exemples de commandes :
- Rechercher un paquet :
pip search flask - Installer une version spécifique :
pip install flask==0.8 - Désinstaller un paquet :
pip uninstall Werkzeug - Afficher les informations d'un paquet :
pip show flask - Vérifier les dépendances :
pip check flask - Lister les paquets installés :
pip listoupip freeze - Exporter les paquets dans un fichier :
pip freeze > requirements.txt - Installer depuis un fichier requirements :
pip install -r requirements.txt - Activer l'auto-complétion :
pip completion --bash > ~/.profile - Télécharger sans installer :
pip install -d <r> -r requirements.txt</r> - Créer un paquet wheel :
pip wheel <nom_paquet></nom_paquet> - Mettre à jour un paquet :
pip install -U <nom_paquet></nom_paquet> - Mettre à jour pip lui-même :
pip install -U pip
Accélérer les installations avec pip
Pour pallier la lenteur de PyPI, utilisez des miroirs domestiques. Spécifiez un miroir pour une installation ponctuelle avec l'option -i, par exemple pip install -i http://pypi.douban.com/simple flask. Pour une configuration globale, éditez le fichier ~/.pip/pip.conf (Unix/macOS) ou %HOME%\pip\pip.ini (Windows).
Pour les déploiements en lot, téléchargez les paquets localement avec pip install --download='pwd' -r requirements.txt, puis installez-les sans réseau via pip install --no-index -f file:///'pwd' -r requirements.txt.
Éditeurs Python
Sous Linux : plugins vim pour Python
Vim peut être personnalisé pour améliorer la productivité Python. Ajoutez une touche F5 pour exécuter des scripts directement. Des plugins comme snipmate offrent la complétion de code, Syntastic vérifie la syntaxe à l'enregistrement, et jedi-vim fournit une auto-complétion intelligente après installation de jedi via pip install jedi.
Sous Windows : l'IDE PyCharm
PyCharm, développé par JetBrains, est un IDE puissant pour Python avec des fonctionnalités telles que la complétion de code, la mise en surbrillance, la gestion de projet, les tests unitaires intégrés, le débogage graphique et le support des plugins.
Vérification des normes de code Python
La norme PEP 8
PEP 8 définit les conventions de style pour le code Python, améliorant la lisibilité et la maintenabilité. Consultez le guide officiel pour les détails sur l'alignement, les imports, les espaces et les noms.
Vérification avec pycodestyle
Installez pycodestyle via pip install pycodestyle. Exécutez-le sur un fichier avec pycodestyle --first mon_script.py pour identifier les violations de style. Utilisez --show-source pour afficher le code problématique.
Formatage avec autopep8
Autopep8 formate automatiquement le code selon PEP 8. Installez-le avec pip install autopep8 et appliquez-le avec autopep8 --in-place mon_fichier.py. L'option --aggressive permet des corrections plus poussées.
Gestion de l'environnement Python
Différences entre pyenv et virtualenv
pyenv gère différentes versions de Python (par exemple, Python 2.7.13 et 3.6.0), tandis que virtualenv isole les environnements de projet pour des versions de bibliothèques spécifiques (comme Flask 0.8 vs 0.9). Combinez-les pour une flexibilité maximale.
Utilisation de pyenv
Installez pyenv en clonant le dépôt et en configurant les variables d'environnement. Commandes utiles : pyenv install --list pour lister les versions disponibles, pyenv install -v 3.9.0 pour installer, pyenv versions pour afficher les versions installées, et pyenv global 3.9.0 pour changer la version globale.
Utilisation de virtualenv avec pyenv-virtualenv
Installez le plugin pyenv-virtualenv et créez des environnements virtuels avec pyenv virtualenv 3.9.0 mon_projet. Activez-le avec pyenv activate mon_projet et désactivez avec pyenv deactivate. Listez les environnements avec pyenv virtualenvs.
Traitement de texte avec Jinja2
Introduction à Jinja2
Jinja2 est un moteur de templates flexible utilisé dans le développement web et la gestion de fichiers de configuration. Il sépare la logique métier de la présentation, supportant des formats comme HTML, XML et CSV. Installez-le via pip install jinja2.
Syntaxe de base
Jinja2 utilise trois types de blocs : {% %} pour les structures de contrôle, {{ }} pour les variables, et {# #} pour les commentaires. Les variables peuvent être modifiées avec des filtres, par exemple {{ nom | upper }}. Les structures de contrôle incluent les conditions {% if %}...{% endif %} et les boucles {% for %}...{% endfor %}.
Macros et héritage
Les macros dans Jinja2 agissent comme des fonctions réutilisables, définies avec {% macro %}...{% endmacro %}. L'héritage de templates permet de créer des squelettes de base avec {% extends %} et de remplir des blocs avec {% block %}.
Exemple d'application
Générez un fichier YAML à partir de données structurées en utilisant un template Jinja2. Définissez un dictionnaire de règles, créez un template avec des boucles pour itérer sur les éléments, et rendez-le avec jinja2.Template(source=template).render(rules=dictionnaire).
Gestion de système Linux
Lecture et écriture de fichiers
Fonction open intégrée
Ouvrez des fichiers avec open('fichier.txt', 'r', encoding='utf-8'). Les modes courants incluent 'r' pour lecture, 'w' pour écriture, et 'a' pour ajout. Utilisez des gestionnaires de contexte avec with pour éviter les fuites de descripteurs, par exemple :
with open('donnees.txt', 'r', encoding='utf-8') as f:
contenu = f.read()
Fonctions de lecture et écriture
Pour la lecture, utilisez read() pour tout le contenu, readline() pour une ligne, ou readlines() pour une liste de lignes. Pour l'écriture, utilisez write() ou writelines(). La fonction print() peut également écrire dans un fichier avec l'argument file.
Fichiers comme objets itérables
Les fichiers supportent l'itération avec des boucles for, ce qui est efficace pour les gros fichiers :
with open('journal.log', 'r') as f:
for ligne in f:
print(ligne.strip().upper())
Gestion des fichiers et chemins
Utilisation du module os
Le module os fournit des fonctions pour manipuler les chemins et les fichiers. Exemple : comptabiliser les commandes historiques dans ~/.bash_history avec collections.Counter.
Gestion du contenu des fichiers
Comparaison avec filecmp
Le module filecmp compare des fichiers et des répertoires. Utilisez filecmp.cmp('fichier1', 'fichier2') pour vérifier l'égalité, et filecmp.dircmp('rep1', 'rep2') pour comparer des répertoires, bien que cette dernière fonction ne soit pas récursive.
Gestion des archives compressées
Le module shutil permet de créer et extraire des archives. Par exemple, utilisez shutil.make_archive('archive', 'zip', 'repertoire') pour compresser un répertoire.