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 :

[débutant] Importer un package avec PATH dans un script [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    août 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : août 2022
    Messages : 7
    Points : 9
    Points
    9
    Par défaut [débutant] Importer un package avec PATH dans un script
    Bonjour à tous,

    Je galère dans un script, si vous avez la solution merci beaucoup !

    Environnement :
    Python 3.11
    Windows 11

    - Commande dans le script Python:

    import pexpect

    - message d'erreur (déclenchement du script via Cygwin, il s'agit d'un soft prévu pour Linux qui se lance via Cygwin)

    ModuleNotFoundError: No module named 'pexpect'

    - J'utilise donc PIP et même PIP3 pour installer "pexpect" avec pip install pexpect
    - il est présent maintenant dans

    C:\Users\nicol\AppData\Local\Programs\Python\Python311\Lib\site-packages\pexpect

    je refais la commande pour confirmer sa présence :
    Requirement already satisfied: pexpect in c:\users\nicol\appdata\local\programs\python\python311\lib\site-packages (4.8.0)
    Requirement already satisfied: ptyprocess>=0.5 in c:\users\nicol\appdata\local\programs\python\python311\lib\site-packages (from pexpect) (0.7.0)

    - Le script ne le trouve toujours pas, toujours la même erreur. Je vois que "pexpect" est un package/répertoire avec plusieurs autres scripts à l'intérieur(dont pexpect.py)
    et que la commande "import" doit donc concerner ce package et pas un module.
    Je cherche et je vois que l'on peut importer un package en mettant le PATH dans le script
    J'ai donc essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import pexpect
    os.path.join('C:\Users\nicol\AppData\Local\Programs\Python\Python311\Lib\site-packages\pexpect')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import pexpect
    os.path.join('C:\Users\nicol\AppData\Local\Programs\Python\Python311\Lib\site-packages\pexpect\pexpect.py')
    Mais rien à faire je ne trouve pas, toujours le même message d'erreur. J'ai un doute sur la façon d'appeler ce package avec PATH (est-ce que c'est bien la bonne solution, et la raison de ce message d'erreur ?), et si c'est en effet PATH qu'il faut utiliser je doute de mon code !
    Merci pour le coup de main et bonne journée
    Nico

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    12 118
    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 118
    Points : 29 565
    Points
    29 565
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Tout d'abord le path contient les différents chemins "pouvant" contenir l'import demandé. Il est donc logique de le modifier avant de tenter l'import (ça ne te semble pas évident??? )
    Ensuite effectivement le path peut être modfié, sauf que le path qui gère les imports c'est sys.path et non os.path.

    Et enfin quand un package est installé, il est installé dans les libs standard de Python, libs qui sont déjà dans le path. Donc le path n'a nul besoin d'être modifié pour utiliser la lib en question. Il te suffit d'ailleurs d'appeler python et taper import pexpect pour vérifier si l'import se fait. Et s'il se fait correctement, alors il n'y a aucune raison qu'il ne se fasse pas dans ton code. Sauf si le souci vient du code lui-même (ou peut-être de ton environnement de dev...)
    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]

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    juillet 2006
    Messages
    3 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Alimentation

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 424
    Points : 6 249
    Points
    6 249
    Par défaut
    Bonjour,

    Commencer par récupérer la liste des versions de vos Python depuis votre CMD et renvoyer l'information

    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 : 20 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Citation Envoyé par Nic_projet_2022 Voir le message
    J'ai un doute sur la façon d'appeler ce package avec PATH (est-ce que c'est bien la bonne solution, et la raison de ce message d'erreur ?), et si c'est en effet PATH qu'il faut utiliser je doute de mon code !
    La seule chose que vous ne montrez pas c'est comment est lancé ce script et... confirmer qu'il est bien lancé avec le Python de l'environnement dans lequel a été installé le module pexpect.... car on a ce genre de problème lorsqu'on installe un module dans un environnement Python puis on exécute son script dans un autre.
    fred1599 vous a donné "l'astuce" pour voir les différents environnements installés (mais comme vous n'avez pas précisé comment est lancé le script, ce ne sera peut être pas suffisant).

    Reste que vu les limitations de pexpect sur Windows....

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    août 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : août 2022
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Bonjour et merci pour vos réponses

    - Sve@r :
    J'ai ouvert Python, taper import pexpect et rien

    Python 3.11.1 (tags/v3.11.1:a7a450f, Dec 6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import pexpect
    >>>

    Et j'avais tenté de lancer le script avant d'avoir le message d'erreur, il ne vient pas de moi ;-)


    - Fred1599 :

    C:\Users\toto>py --list
    -V:3.11 * Python 3.11 (64-bit)


    - Wiztricks :
    Il s'agit d'installer un environnement de simulation SITL pour fonctionner avec MAVPROXY pour du vol de drone
    J'ai installé CYGWIN comme indiqué ici : https://ardupilot.org/dev/docs/build...windows-cygwin
    Et j'ai vérifié le path vers CYGWIN et Python dans Windows


    https://ardupilot.org/dev/docs/sitl-...n-windows.html

    C'est ceci que je lance et où j'ai le message d'erreur :

    cd C:/Users/nicol/Documents/Ardupilot/ardupilot/ArduPlane
    ../Tools/autotest/sim_vehicle.py --map --console

    Traceback (most recent call last):
    File "/cygdrive/c/Users/nicol/Documents/Ardupilot/ardupilot/ArduPlane/../Tools/autotest/sim_vehicle.py", line 31, in <module>
    from pysim import util
    File "/cygdrive/c/Users/nicol/Documents/Ardupilot/ardupilot/Tools/autotest/pysim/util.py", line 19, in <module>
    import pexpect
    ModuleNotFoundError: No module named 'pexpect'


    Et le script util.py est ici :
    https://github.com/ArduPilot/ardupil.../pysim/util.py
    Images attachées Images attachées   

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 : 20 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Salut,

    Citation Envoyé par Nic_projet_2022 Voir le message
    - Wiztricks :
    Il s'agit d'installer un environnement de simulation SITL pour fonctionner avec MAVPROXY pour du vol de drone
    J'ai installé CYGWIN comme indiqué ici : https://ardupilot.org/dev/docs/build...windows-cygwin
    Et j'ai vérifié le path vers CYGWIN et Python dans Windows
    Cygwin est un environnement de développement Linux like sur Windows qui apparemment vient avec son propre Python.
    C'est à priori dans celui là qu'il faudrait installer pexpect.
    Ceci dit, je ne vais pas essayer à votre place... et outre que ce ne soit pas un sujet de programmation Python, vous faites des choses bien compliquées pour débuter (et pas grand monde va pouvoir vous débrouiller l'affaire).

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

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    juillet 2006
    Messages
    3 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Alimentation

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 424
    Points : 6 249
    Points
    6 249
    Par défaut
    Citation Envoyé par Nic_projet_2022 Voir le message

    C:\Users\toto>py --list
    -V:3.11 * Python 3.11 (64-bit)
    As-tu tenté de passer par python -m ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    py -m pip install pexpect
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 : 20 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    As-tu tenté de passer par python -m ?
    Le Python qui vient avec cygwin semble avoir son pip et ne doit pas être visible dans la registry Windows (dans laquelle py récupère ses infos).
    Reste à savoir comment lancer ce python là... et essayer d'y faire fonctionner pip via python -m pip
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    12 118
    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 118
    Points : 29 565
    Points
    29 565
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Nic_projet_2022 Voir le message
    J'ai ouvert Python, taper import pexpect et rien
    C'est bien, ça veut dire que l'import fonctionne. Sinon il aurait gueulé. Hé oui, dans la majorité des outils de pro, si l'outil fonctionne il ne dit rien, se contentant de faire son job. C'est quand il y a un truc qui le gêne qu'il ouvre grand sa bouche.
    Donc puisque la preuve est faite que pexpect est bien installé, ça ne vient pas de Python. Tu peux jouer avec le path autant que tu veux ça ne changera rien.

    Citation Envoyé par Nic_projet_2022 Voir le message
    J'ai installé CYGWIN
    Mouais. wiztricks a bien résumé. Ce n'est plus un souci lié au langage mais à "comment utiliser cygwin" et là on ne peut pas grand chose. Je me pose quand-même plusieurs questions
    • vu que tu as Python qui fonctionne (puisque tu as ouvert Python c'est que ça fonctionne) pourquoi passer par une émulation Linux
    • même si tu n'as pas de Python, pourquoi passer par une émulation Linux alors que Python est disponible pour Windows
    • pourquoi passer par une vieille émulation de Linux alors que tu as maintenant des outils bien rôdés permettant d'émuler Linux de façon plus aboutie. Je crois avoir vu que W10 avait un émulateur Linux intégré téléchargeable. Et si tu veux un vrai Linux tu peux utiliser VirtualBox pour simuler un ordinateur complet

    Bref en résumé: pourquoi utiliser cygwin...
    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]

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 : 20 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bref en résumé: pourquoi utiliser cygwin...
    Le PO y a répondu:
    Citation Envoyé par Nic_projet_2022 Voir le message
    Il s'agit d'installer un environnement de simulation SITL pour fonctionner avec MAVPROXY pour du vol de drone
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    12 118
    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 118
    Points : 29 565
    Points
    29 565
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Le PO y a répondu
    Ben... suis allé récupérer le script là où le PO l'a indiqué (https://github.com/ArduPilot/ardupil.../pysim/util.py) et l'ai fait tourner sur un Linux virtualisé dans Virtualbox sans souci. Bon le script fait que dalle mais les imports fonctionnent. Rien n'oblige cygwin.
    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]

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    août 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : août 2022
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    En effet, Cygwin a son propre Python (et même 2 répertoires différents !), ce qui explique le message d'erreur
    J'ai installé le package Pexpect avec le lanceur Cygwin et cela fonctionne.
    Vu la galère de Cygwin, je vais sérieusement songé à utiliser WSL !

    Merci pour votre aide et bonne soirée
    Nico

  13. #13
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    juillet 2006
    Messages
    3 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Alimentation

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 424
    Points : 6 249
    Points
    6 249
    Par défaut
    Citation Envoyé par Nic_projet_2022 Voir le message
    En effet, Cygwin a son propre Python (et même 2 répertoires différents !), ce qui explique le message d'erreur
    J'ai installé le package Pexpect avec le lanceur Cygwin et cela fonctionne.
    Vu la galère de Cygwin, je vais sérieusement songé à utiliser WSL !
    Il y a aussi la solution docker, mais ça demande un certains temps d'apprentissage, tant dans la manière que ça fonctionne, que dans son utilisation.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 : 20 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Rien n'oblige cygwin.
    Il y a plein de façons de créer un environnement Linux sur Windows...

    Sera-t-il plus simple/facile d'installer cygwin et ses packages qu'un virtualbox et un Linux complet ou via le linux for windows de microsoft ?

    Le choix de l'un ou de l'autre repose en général sur des critères non techniques (rien n'oblige).

    Tout comme programmer n'oblige en rien à utiliser Python (on peut le faire avec plein d'autres langages et certains seront peut être plus adaptés à ce qu'on est à défaut d'être "populaires").

    - 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: 1
    Dernier message: 19/02/2008, 00h32
  2. Réponses: 1
    Dernier message: 18/06/2007, 22h15
  3. import fichier vrml avec coin3d dans un contexte openGL
    Par kikodingo dans le forum OpenGL
    Réponses: 1
    Dernier message: 08/05/2007, 22h28
  4. [VBA-E]{débutant} Importation de données avec menu déroulant
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/04/2007, 17h02
  5. [CSS] débutante : un entête fixe avec image dans le CSS
    Par khany dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/06/2005, 15h23

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