IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Import des bibliotheques


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Octobre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Octobre 2018
    Messages : 34
    Par défaut Import des bibliotheques
    Bonsoir, peut-on vérifier si les imports de bibliothèques en haut d'un script sont bien utilisées dans le corps du script.

    pour les supprimer le cas échéant.

    J'utilise VS Code

    merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 705
    Par défaut
    Salut,

    Si j'écris "import truc", les accès à la bibliothèque truc seront de la forme truc.xyz.
    Par contre, en écrivant "from truc import xyz", lorsqu'on rencontre xyz, on ne saura pas comment a été initialisé cette variable globale.
    Dans tous les cas, il faudrait pouvoir compter le nombre de références a truc lors de l'exécution pour savoir si le module est utilisé ou pas (c'est pas parce qu'une ligne utilise truc.xyz qu'on l'excute à chaque fois...)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Octobre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Octobre 2018
    Messages : 34
    Par défaut
    Bonsoir, exemple
    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import random
     
    x = random.randint(0, 100)
    print(x)
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import random
     
    x = 21
    print(x)
    Étant donné que j'ai supprimé la ligne random.randint et qu'il n'y a plus de ligne utilisant la bibliothèque random, il n'est pas inutile de laisser la ligne import random.

    Donc, je voudrais savoir, s'il est possible de savoir, si une ligne d'import ne sert à rien pour se script.

    Merci d'avance

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonsoir,

    un addon dans VsCode permet de griser les lignes d'import (et les variables) qui ne sont pas utilisées dans le script.

    Voir du côté de pylance probablement.

    Sinon, vous installez la librairie Python pylint que vous pouvez ensuite appeler en ligne de commande dans une console et qui vous dira si un import n'est pas utilisé.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 822
    Billets dans le blog
    1
    Par défaut
    Bonjour
    pylint est un analyseur de code Python. Et entre autres il liste les import non utlisés.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 705
    Par défaut
    Citation Envoyé par Yanss49 Voir le message
    Donc, je voudrais savoir, s'il est possible de savoir, si une ligne d'import ne sert à rien pour se script.
    C'est vous qui écrivez et modifiez le script... normalement vous devriez savoir.
    Après, si vous voulez industrialiser la production du code(*), il y a des outils comme ceux déjà mentionnés.
    (*) certifier de façon indépendante et automatisée de certaines qualités non technique d'un code.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 320
    Par défaut
    bonjour

    oui, existe des outils avec cet éditeur (ligne surlignée automatiquement en rouge).

    En autre, nous avons aussi ruff (dans vscode et autres éditeurs mais aussi en ligne de commande)

    exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import json
    from urllib import request
     
    print("salut")
    Vérification en ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ruff check truc.py
    truc.py:1:8: F401[*] `json` imported but unused
      |
    1 | import json
      |        ^^^^ F401
    2 | from urllib import request
      |
      = help: Remove unused import: `json`
     
    truc.py:2:20: F401[*] `urllib.request` imported but unused
      |
    1 | import json
    2 | from urllib import request
      |                    ^^^^^^^ F401
      |
      = help: Remove unused import: `urllib.request`
     
    Found 2 errors.[*] 2 fixable with the `--fix` option.
    erreur F401 mais un linter en détecte bien d'autres, 800 erreurs/avertissements ruff

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 523
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 523
    Par défaut
    sinon une façon empirique: tu commentes l'import et tu regardes si tu as une erreur, si oui, c'est que l'import est utilisé (il faut testé toutes fonctionnalités pour en être sûr)

  9. #9
    Membre averti
    Homme Profil pro
    Demandeur d'emploi
    Inscrit en
    Octobre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Demandeur d'emploi

    Informations forums :
    Inscription : Octobre 2018
    Messages : 34
    Par défaut
    Merci pour vos réponses

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 822
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est vous qui écrivez et modifiez le script... normalement vous devriez savoir.
    Ca c'est la théorie.
    Dans la réalité, on importe une lib puis on l'utilise une fois, deux fois, trois fois. Puis le code évolue et on efface la première occurrence. Puis le code évolue encore et on efface la seconde occurrence. Puis le code évolue et on rajoute une 4°. Puis on efface la 3°. Puis etc etc. Et au final on ne sait plus trop où on en est.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 705
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Puis le code évolue et on rajoute une 4°. Puis on efface la 3°. Puis etc etc. Et au final on ne sait plus trop où on en est.
    Si c'est le cas, on repart de zéro en espérant d'arriver à maîtriser un peu mieux le bousin.
    Quand je codais professionnellement, les revues de code étaient faites par des humains qui posaient des tas de questions sur le design, les algos, ... passer les tests "automatisables" était juste un prérequis à une revue.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 822
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Si c'est le cas, on repart de zéro en espérant d'arriver à maîtriser un peu mieux le bousin.
    Oui mais les choses évoluent aussi de façon indépendante mais qui vont avoir un impact. Par exemple j'utilisais os.path pour créer des chemins. Puis un jour est apparu pathlib. De là, j'ai repris mes codes évidemment, je ne suis pas reparti de zéro. Ce n'est pas une histoire de maîtrise ça. Après oui j'ai checké si import os se justifiait encore mais tout n'est pas toujours simple et ce n'est pas qu'une question de "espérer arriver à maîtriser le bousin".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 705
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Puis un jour est apparu pathlib. De là, j'ai repris mes codes évidemment, je ne suis pas reparti de zéro.
    Je ne sais pas... je dirais "quelle idée?!?"
    os.path est toujours là et le remplacer par pathlib dans des codes qui marchent juste parce que c'est "moderne" n'a pas grand intérêt (sauf de se dire que c'est un exercice "utile"). On fait plutôt ça pour de nouveaux codes ou éventuellement à l'occasion de gros chantiers qui ajoutent/modifient des fonctionnalités conduisant à revoir/ré-écrire pas mal de code.

    Citation Envoyé par Sve@r Voir le message
    Après oui j'ai checké si import os se justifiait encore mais tout n'est pas toujours aussi simple.
    Avec les vieux codes, le plus difficile, est de rester concentré sur les changements à effectuer plutôt que de reprendre tout ce qui ne nous plait pas. Après remplacer l'utilisation de la bibliothèque machin par la bibliothèque truc se fait plus ou moins facilement... car ça peut être la réécriture de quelques lignes a un petit projet où il va peut être falloir expliciter les cas d'utilisation de machin dans une façade (au sens OO) qui réalise l'interface. Eventuellement booster les codes de tests pour s'assurer que le fonctionnel est équivalent (ainsi que les performances) puis...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 320
    Par défaut
    Perso, avec toujours un linteur, je me pose plus que rarement ce type de question

    request <--> urllib, os.path <--> pathlib, tucpdf <---> pdfmachin
    En refactoring : je ne risque pas d'avoir ce type de problème puisque je vais créer une granche git spécifique au besoin et le commit sera forcément sans cette "ancienne" lib

    Mais, parfois, sans linteur, cela peut devenir un petit casse tête avec de gros framework/libs (Qt, ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from lib.exceptions import erreursNet, erreursRéseau, erreurs???
    from lib.constantes import couleurs, events, ???, ???

  15. #15
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 705
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Mais, parfois, sans linteur, cela peut devenir un petit casse tête avec de gros framework/libs (Qt, ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from lib.exceptions import erreursNet, erreursRéseau, erreurs???
    from lib.constantes import couleurs, events, ???, ???
    Sûr qu'écrire erreursNet au lieu de lib.exceptions.erreursNet est moins fatiguant!
    Je n'utilise cette définition de variables globales que pour de petits exemples/brouillons.

    Dans la pratique, je préfère définir un alias via import lib.exceptions as libe et assigner erreursNet = libe.erreursNet avant l'entrée dans une boucle pour utiliser erreursNet et optimiser (çà évite l'indirection).

    Ceci dit ma pratique professionnelle s'est arrêtée il y a une dizaine d'année déjà. A l'époque, un pylint était encore un prototype en version 0.x. Depuis tout cela a bien murit et le typing a ajouté une couche qui permet une certaine industrialisation qui rendent un peu obsolètes ce qui pouvait s'appeler "bonnes pratiques".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/02/2004, 21h55
  2. Export/import des logins et pwd
    Par Colargole dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 17/07/2003, 16h07
  3. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 17h43
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  5. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo