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 :

AttributeError: 'module' object has no attribute 'exc_info'


Sujet :

Python

  1. #21
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Puisque tu insistes pour ne pas être le coupable il n'y a rien à dire, c'est python le fautif !

  2. #22
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    Dernière info pour mes cracks sentencieux: mon code fonctionne parfaitement avec Thonny mais pas avec VisualCode, ce qui laisse entendre que finalement je ne suis pas responsable du problème que je rencontre.. Dingue..
    Nouvelle info (à force on finira par s'en sortir): Tu utilises VisualCode !!! Nous qui pensions (naïvement je l'avoue) que pour programmer en Python tu utilisais Python...
    Or VisualCode ce n'est pas du Python natif. On a déjà vu sur ce forum des soucis analogues avec ce RAD (suis en train de chercher les posts qui en parlent). Tu nous l'aurait dit immédiatement on te l'aurait dit tout aussi immédiatement mais bon, comme avec toi il faut tout deviner (en plus de continuer à se faire insulter par un mufle incapable de reconnaitre ses torts et qui dépasse même les limites de l'hypocrisie en allant jusqu'à se plaindre de nous dans un autre forum !!!)
    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. #23
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Mais dites-moi, est-ce que par hasard vous n'utilisez pas MicroPython ? Parce que là c'est encore une nouvelle information, et vu que c'est une implémentation spécifique de Python ça expliquerait vos déboires. Et quand vous travaillez avec deux IDE, et que l'un des deux fonctionne (Thonny comme par hasard), je ne suis pas persuadée que c'est le même environnement Python qui est exécuté dans tous les cas.

    Peut-être que vous pouvez utiliser sys.print_exception à la place. Voir la doc: https://docs.micropython.org/en/v1.8...brary/sys.html

  4. #24
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Avant de se poser ces questions, il faudrait au moins que le codeur fasse un minimum de tests ! J'ai l'impression d'avoir un débutant qui rencontre son premier bug fichier !
    - erreur à open() ou read() ?
    - que donne un file exists() ?
    - si oui, et fstat() ?

    Et, accessoirement, comme dit plus haut (mais le dev avec 40 ans de métier n'a pas encore essayé il préfère accuser son éditeur), on passe un path standard (un copier collé depuis pascal n'a pas obligation de passer dans un autre langage)

    Ensuite, on peut discuter et a vu que le dev est un minimum capable

  5. #25
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Mais dites-moi, est-ce que par hasard vous n'utilisez pas MicroPython ? Parce que là c'est encore une nouvelle information, et vu que c'est une implémentation spécifique de Python ça expliquerait vos déboires. Et quand vous travaillez avec deux IDE, et que l'un des deux fonctionne (Thonny comme par hasard), je ne suis pas persuadée que c'est le même environnement Python qui est exécuté dans tous les cas.

    Peut-être que vous pouvez utiliser sys.print_exception à la place. Voir la doc: https://docs.micropython.org/en/v1.8...brary/sys.html
    Merci bien: voila enfin une réponse constructive et bienveillante.
    De fait j'utilise Micropython (je fais de la robotique sur Lego Mindstrorm).
    Etant novice en Python, j'ignorais qu'il y avait des difficultés avec un IDE plutôt qu'un autre. On m'a reproché mon expérience en Pascal, mais là je n'ai JAMAIS eu de problème en passant de Delphi puis Embarcadero vers Lazarus, d'où je l'admets une partie de ma méfiance voire de ma colère vis-à-vis de Python.

    Quoi qu'il en soit pourquoi dites-vous "Thonny comme par hasard"? Y a-t'il un problème avec cet éditeur?

  6. #26
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    - erreur à open() ou read() ?
    Vu qu'il a eu un ENOENT je penche pour open().
    Accessoirement (j'ai pas tilté sur le coup), je n'ai jamais vu de ENOENT. Quand je tente d'ouvrir un fichier inexistant, j'obtiens un FileNotFoundError. ENOENT on l'obtient via errno. Enfin je préfère penser que ça vient de VisualCode...

    Citation Envoyé par hlmhv Voir le message
    Merci bien: voila enfin une réponse constructive et bienveillante.
    Hé, le dev millésimé, c'est qui qui n'a pas donné toutes les infos dès le départ!!!???!!! Franchement j'ai l'impression de me retrouver face à Perceval de Kaamelott

    Accessoirement papajoker te donne des pistes à tenter, des instructions à exécuter. Mais tu illustres littéralement la locution "il n’est pire sourd que celui qui ne veut pas entendre".
    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]

  7. #27
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    On m'a reproché mon expérience en Pascal, mais là je n'ai JAMAIS eu de problème en passant de Delphi puis Embarcadero vers Lazarus
    Tu dois alors avoir moins d'expérience que moi en pascal Si il y a de nombreuses différences mais en effet pour un code très light cela peut passer.
    Par exemple, bonjour le portage des fonctions anonymes
    Personne ne te reproche ton expérience ! je te dis que ton expérience paraît complètement oubliée. Tu nous aurais dit simplement que tu étais débutant python, cela serait passé beaucoup mieux. Pour moi, avoir 40 ans de codage et ne pas être capable de nous donner véritablement l'erreur est complètement incompréhensible et ce qui me fâche.

    Citation Envoyé par hlmhv Voir le message
    j'ignorais qu'il y avait des difficultés avec un IDE plutôt qu'un autre.
    Tu n'as pas compris, on parle d'ici d'un interpréteur différent !

    Et donc , je suis lourd ! Je vais encore te dire d'utiliser justement un path valide puisque l'on ne sais pas comment réagit tel ou tel interpréteur à un path invalide (moi même, je ne sais pas)

  8. #28
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    C'est fait!
    Ce serait fait si je pouvais recopier le code et reproduire l'erreur.

    Or déjà, je suis obligé de nettoyer le code que vous avez posté... et je me retrouve avec la seule définition de la fonction getorder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import os
    import traceback
     
    FichierOrders =  'c:/temp/Orders.rob'
     
    def getorder():
        try:
            f=open(FichierOrders, 'r')
            data=f.read()
        except Exception:
            data='erreur.'
            traceback.print_exc()
        return(data)
    Et l'exécution de ce script n'a aucune raison de planter puisqu'il ne fait pas grand chose a part définir une fonction.

    Je peux encore modifier le code en ajoutant l'appel de la fonction. Normal que çà plante avec le nom de fichier original: il n'existe pas chez moi (et ça ne sort pas d'erreur avec un fichier existant).

    Avec çà, toujours pas de problème côté Python mais peut être que vous êtes un peu débordé par autant de nouveautés (en 40 ans, j'ai pratiqué des tas de langages: çà aide à garder l'esprit alerte et un peu d'humilité).

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

  9. #29
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Vu qu'il a eu un ENOENT je penche pour open().
    Accessoirement (j'ai pas tilté sur le coup), je n'ai jamais vu de ENOENT. Quand je tente d'ouvrir un fichier inexistant, j'obtiens un FileNotFoundError. ENOENT on l'obtient via errno. Enfin je préfère penser que ça vient de VisualCode...
    A ton avis, si cela marche avec Thonny et pas avec VC?
    Citation Envoyé par Sve@r
    Hé, le dev millésimé, c'est qui qui n'a pas donné toutes les infos dès le départ!!!???!!! Franchement j'ai l'impression de me retrouver face à Perceval de Kaamelott
    Comme dans mon pays et plus encore dans ma province on adore l'autodérision, cela ne me fait bien rire..
    Par ailleurs tu dois admettre que tu as du mal avec les aînés.
    Il suffit que je parle de mon expérience - et mon inexpérience en Python!!! - pour que TU commences à m'agresser. Il suffit de reprendre la séquence des messages pour le constater. Désolant.

    Citation Envoyé par Sve@r Voir le message
    Accessoirement papajoker te donne des pistes à tenter, des instructions à exécuter. Mais tu illustres littéralement la locution "il n’est pire sourd que celui qui ne veut pas entendre".
    On dirait bien que tu n'as suivi de nos échanges que ceux qui aiguisent ton agressivité. Et pour le coup je pense connaître ce domaine-là mieux que toi, à moins que toi aussi tu sois médecin et programmeur amateur novice en Python?
    Naan, j'y crois pas trop là..
    Mais j'ai lu Papajoker et constaté qu'il n'est pas trop compréhensif envers les novices non plus. Cela ne m'a pas empêché de le lire avec attention et réfléchir à ses idées.
    Bordel! Va donc jeter un oeil sur les échanges que j'ai eu il y a peu sur le forum Lazarus et tu verras avec quelle sympathie amicale j'ai été reçu. Et tant qu'à faire prends en de la graine.

    Bon j'arrête de te lire, car je devine que tu ne vas jamais admettre que tu puisses avoir toi aussi des lacunes. Ne serait-ce que de ne pas avoir pensé à l'éditeur. Moi je ne pouvais pas savoir que VC ne se comporte pas comme Thonny, au contraire je sais que le premier est fort apprécié par les informaticiens professionnels, dont mon fils cadet qui prépare tout de même une thèse de doctorat. Là tu peux dire que je me vante si tu en as envie: je suis en effet très fier de lui. Parce qu'il n'est pas agressif et sait expliquer les choses sans a priori.

    Vale!

  10. #30
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    que tu puisses avoir toi aussi des lacunes. Ne serait-ce que de ne pas avoir pensé à l'éditeur
    Nous aussi, j'ai de grosses lacunes en boule de cristal ! cela se soigne ?

    Citation Envoyé par hlmhv Voir le message
    j'ai lu Papajoker et constaté qu'il n'est pas trop compréhensif envers les novices non plus. Cela ne m'a pas empêché de le lire avec attention et réfléchir à ses idées.
    Vraiment tu ne comprends rien :
    Tu reconte une belle histoire au début, mais tu te comporte comme un gamin qui découvre un clavier.
    Ce qui m'énerve c'est que justement avec tout ton bagage, tu ne fais que lire mais AUCUNE RÉACTION ni test, ni réponses

    - Je t'ai proposé du code tout au début au message #4 avec pathlib ... Aucune réaction, faire un essai ne t'est même pas passé par la tête
    - nous te disons que ton code pascal c:/temp/Orders.rob est invalide (en particulier pour ton interpréteur? que je ne connais pas), mais as-tu essayé de le modifier ? tu préfères parler de pascal et de tes états d'âme. Pour moi, c'est le minimum à faire puisque tu n'es même pas capable de nous donner où est déclenchée ton erreur (open ou read ?) mais c'est vrai que tu aimes que nous devinions pour toi... Pour moi, si tu n'es même pas capable de tester ceci c'est que tu es un cas désespéré !

  11. #31
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    A ton avis, si cela marche avec Thonny et pas avec VC?
    Ben justement, je t'ai dit que VC avait déjà eu des soucis, tu n'as même pas réagi. Mais binarygirl te dit "oh ça marche avec Thonny et pas avec VC" et immédiatement "enfin une remarque constructive".

    Citation Envoyé par hlmhv Voir le message
    Par ailleurs tu dois admettre que tu as du mal avec les aînés.
    Tu fais une fixette sur ton âge???

    Citation Envoyé par hlmhv Voir le message
    Il suffit que je parle de mon expérience - et mon inexpérience en Python!!! - pour que TU commences à m'agresser. Il suffit de reprendre la séquence des messages pour le constater. Désolant.
    Rectification: il suffit que je te fasse une remarque sur ta façon de poster un code ; et que je pose une question sur tes habitudes en matière de fichier, pour que TU commences avec tes "et de toute façon ça ne sert à rien" et sortir des "si ça convient à Votre Segneurie" et autres ironies!!!

    Citation Envoyé par hlmhv Voir le message
    Et pour le coup je pense connaître ce domaine-là mieux que toi, à moins que toi aussi tu sois médecin et programmeur amateur novice en Python?
    Pourquoi "aussi" médecin? Parce que tu es médecin??? Bien entendu ça aussi c'est une info qu'il fallait que nous devinassions Mille pardons votre altesse docteur, mille pardons de ne pas déceler qu'un "gusse" qui arrive avec ses 40 ans de Pascal et sa réalisation d'un logiciel - toujours professionnel - en déployant une BD complète est en réalité un médecin !!! C'est vrai, c'est tellement courant

    Citation Envoyé par hlmhv Voir le message
    Mais j'ai lu Papajoker et constaté qu'il n'est pas trop compréhensif envers les novices non plus. Cela ne m'a pas empêché de le lire avec attention et réfléchir à ses idées.
    Et réfléchir à la mienne tu y as pensé? Oui je n'en ai mis qu'une seule car vu ta façon de remercier exprès les autres idées et pas les miennes je ne vais pas non plus me fouler pour un ingrat infatué. On constatera aussi que tu ne réponds pas non plus à wiztricks. Aurais-tu du mal avec tes ainés ou plus généralement du mal avec ceux qui te font des remarques... docteur?

    Citation Envoyé par hlmhv Voir le message
    Bordel! Va donc jeter un oeil sur les échanges que j'ai eu il y a peu sur le forum Lazarus et tu verras avec quelle sympathie amicale j'ai été reçu. Et tant qu'à faire prends en de la graine.
    1) j'y suis allé 2) j'y ai même écrit un truc notemment sur ta façon de poster tes codes chez-eux vis à vis de chez-nous et Bordel! va donc jeter un oeil sur mes milliers de posts et échanges que j'ai avec les vrais débutants, ceux qui acceptent les remarques et conseils. Bordel! va donc jeter un oeil sur mes propres questions de débutant ici https://www.developpez.net/forums/d2...gerer-l-erreur ou ici https://www.developpez.net/forums/d2...u/test-inutile et ma façon de les poser et toi prends en de la graine!!! Je t'ai dit comment poster un code, donné un lien d'exemple mais tu n'as même pas daigné aller le voir et ton code suivant était tout aussi illisible. papajoker te fait aussi une remarque sur ta façon de poster les codes dans les autres forums mais bien entendu tu te gardes bien d'y répondre. Tu n'as même pas dit "Bonjour" en arrivant ici, comme le gros malappris que tu es. Et n'essayons même pas d'envisager un "s'il vous plait" ou "merci" qui sont hors de ta portée de minable. Et ça ose donner des leçons de politesse et de morale ça???!!!???
    Tiens un nouvel exemple: là un type sympa, qui arrive poliment, qui dit "bonjour", se disant simplement débutant, poste son code proprement, code qu'on peut copier/coller directement chez-nous pour le tester sans avoir besoin, comme l'a dit wiztricks, de devoir le nettoyer au préalable. Quelle différence, quelle agréable fraicheur comparé à ta prose de pédant!!!

    Citation Envoyé par hlmhv Voir le message
    Bon j'arrête de te lire, car je devine que tu ne vas jamais admettre que tu puisses avoir toi aussi des lacunes. Ne serait-ce que de ne pas avoir pensé à l'éditeur.
    Bien sûr, en plus du reste c'est à nous de penser à tout ce que tu ne dis pas. T'as raison, on est des gros nuls. Je me demande pourquoi tu viens encore ici...
    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. #32
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Et ce qui est amusant avec ce problème, c'est que l'autre sujet, je t'ai conseillé d'utiliser input puisque tu ne désirais pas utiliser de fichier.
    En python, nous avons sys.stdin qui est d'un compliqué incommensurable à utiliser
    En pascal, je ne te ferai pas l'affront de te parler de TProcess que tu utilises depuis des décennies.

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Je vois du pybricks, donc ça doit être un code qui tourne sur des élements de la célèbre brique, donc il n'y a sans doute pas d'arborescence de type c:/temp/...
    un print(os.getcwd()) pour voir ce que ça affiche pour le répertoire de travail

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    ça se confirme que l'EV3 tourne sur du Linux, donc pas de chemin dans le style windows
    https://pybricks.com/install/mindsto...d-micropython/

  15. #35
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par umfred Voir le message
    ça se confirme que l'EV3 tourne sur du Linux, donc pas de chemin dans le style windows
    https://pybricks.com/install/mindsto...d-micropython/
    Ok merci. En réalité le slash ou anti-slash n'est pas la cause de mon soucis..

    Je devrais préciser que mon but n'est PAS de coder directement pour l'EV3, mais d'utiliser le Python sur PC, lequel interagira directement avec la brique Lego. Je ne vois pas comment interfacer cette brique autrement.
    Donc si je résume:

    Brique Lego <--> Python sur PC <--> 2 fichiers d'échange (commande & réponse) <--> Lazarus.

    Mon but est d'avoir grâce à Lazarus un interface graphique de commande du robot Lego qui soit agréable.
    Maintenant comme je suis novice en Python, tu vas peut-être me dire qu'on peut trouver un RAD pour ce langage qui soit aussi facile et convivial que Lazarus pour le Pascal.
    Si cela existe je suis preneur..

    Pour le moment TVB en Python, c'est le module Lazarus qui rouspète..
    Mais je vais pas vous embêter pour çà hein?

    Encore merci pour ta réponse..

  16. #36
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    mais d'utiliser le Python sur PC
    Donc en fait tu vas utiliser python et non micro-python ? donc pas de problème avec les fichiers

    Citation Envoyé par hlmhv Voir le message
    comme je suis novice en Python, tu vas peut-être me dire qu'on peut trouver un RAD pour ce langage
    perdu mais python permet comme laz de faire des interfaces gtk ou Qt, simplement il n'existe pas de rad, il faut juste savoir coder et alors le travail va aussi vite. (Mais, pour un débutant python, c'est une énorme galère...)
    Existe quand même des outils graphiques pour créer des interfaces par glisser comme delphi, simplement ils sont fournis par gtk ou Qt et indépendants du langage.

    Citation Envoyé par hlmhv Voir le message
    interagira directement avec la brique Lego. Je ne vois pas comment interfacer cette brique autrement.
    Brique Lego <--> Python sur PC <--> 2 fichiers d'échange (commande & réponse) <--> Lazarus.
    2 fichiers ? heureusement que je t'avais dit qu'il était simple de ne pas en utiliser un programmeur avec 40 ans de métier ne connait pas stdin et stdout ? j'ai du mal à le croire.

    Comme dit plus haut, avec laz, tu as TProcess qui a comme attributs "Input" et "Output", donc tu peux depuis ton Gui envoyer des commandes à python et recevoir facilement le résultat.

    Si tu envoies un fichier via stdin à python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not sys.stdin.isatty():
        contenu_fichier = sys.stdin.read()
    Pour le retour, on utilise les print() de python, à pascal de lire les retours dans TProcess.Output (pas le bon forum)
    Mais, ici le script python est lancé à chaque commande du gui...


    Et si tu désires commander un robot avec des simples commandes (utilisation proche d'appel de fonction), on utilise alors la fonction input()
    Ici, le script python est lancé qu'une seule fois par pascal, mais cela demande plus de code pascal...
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    moteur = Moteur()
    moteur.démarrer()
     
    while True:
            entree = input()
            if entree == "quit":
                print("Ok - Au Revoir")
                moteur.stop()
                exit(0)
     
            if entree == "droite":
                moteur.stop()
                moteur.tourner(1)
                print('OK - ', moteur.etat())
    A pascal de lire Output après chaque commande (Input.Write("droite"+Chr(10), 7))

  17. #37
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Donc en fait tu vas utiliser python et non micro-python ? donc pas de problème avec les fichiers


    perdu mais python permet comme laz de faire des interfaces gtk ou Qt, simplement il n'existe pas de rad, il faut juste savoir coder et alors le travail va aussi vite. (Mais, pour un débutant python, c'est une énorme galère...)
    Existe quand même des outils graphiques pour créer des interfaces par glisser comme delphi, simplement ils sont fournis par gtk ou Qt et indépendants du langage.
    Tu peux me donner des pistes à ce sujet? J'ai entendu parler de QT & gtk mais je n'y connais rien comme je l'ai déjà dit.


    Citation Envoyé par papajoker Voir le message
    2 fichiers ? heureusement que je t'avais dit qu'il était simple de ne pas en utiliser un programmeur avec 40 ans de métier ne connait pas stdin et stdout ? j'ai du mal à le croire.

    Comme dit plus haut, avec laz, tu as TProcess qui a comme attributs "Input" et "Output", donc tu peux depuis ton Gui envoyer des commandes à python et recevoir facilement le résultat.
    Rigole si tu veux, mais comme je l'ai écrit plus haut je ne suis PAS professionnel, et de fait je n'ai jamais eu besoin d'utiliser TProcess.
    J'ajoute que de deux solutions la plus simple est pour moi la meilleure, et utiliser des fichiers ne pose normalement aucun problème (et avoue que le temps pris par le PC pour gérer deux fichiers texte d'une ligne est négligeable).
    Je considère donc que cette méthode, si elle n'est pas élégante, est bonne.. si elle marche!
    Mais je vais jeter un oeil sur TProcess tiens..


    Citation Envoyé par papajoker Voir le message
    Si tu envoies un fichier via stdin à python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not sys.stdin.isatty():
        contenu_fichier = sys.stdin.read()
    Pour le retour, on utilise les print() de python, à pascal de lire les retours dans TProcess.Output (pas le bon forum)
    Mais, ici le script python est lancé à chaque commande du gui...
    Oui mais pas d'importance je trouve.. (Je parle de lancer Python et pas de la méthode que tu proposes..)


    Citation Envoyé par papajoker Voir le message
    Et si tu désires commander un robot avec des simples commandes (utilisation proche d'appel de fonction), on utilise alors la fonction input()
    Ici, le script python est lancé qu'une seule fois par pascal, mais cela demande plus de code pascal...
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    moteur = Moteur()
    moteur.démarrer()
     
    while True:
            entree = input()
            if entree == "quit":
                print("Ok - Au Revoir")
                moteur.stop()
                exit(0)
     
            if entree == "droite":
                moteur.stop()
                moteur.tourner(1)
                print('OK - ', moteur.etat())
    A pascal de lire Output après chaque commande (Input.Write("droite", x) ...)
    Ok çà je peux faire, sauf que je ne comprends pas bien comment utiliser input() mais çà je vais pouvoir chercher un peu..

    Alors merci pour ces idées intéressantes!

  18. #38
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    Tu peux me donner des pistes à ce sujet? J'ai entendu parler de QT & gtk
    ? Lazarus permet avec une simple option à la compilation de générer un programme en Qt ou Gtk sans le moindre changement dans le code donc c'est ce que tu utilises déjà
    des pistes, je ne suis pas un moteur de recherche... mais comme dit plus haut, si on débute en python, ajouter un framework est une énorme tâche.
    Note: par contre, en python, le code gtk et qt est complètement différent !

    Citation Envoyé par hlmhv Voir le message
    Oui mais pas d'importance je trouve.. (Je parle de lancer Python et pas de la méthode que tu proposes..)
    ? difficile ... python c:\truc\monscript.py juste à voir si il est bien configuré dans ton path, sinon tu donnes le chemin de python (c:\ou_est_installé\python c:\truc\monscript.py)
    En pascal, très compliqué aussi (voir autre forums)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Proc.Executable := 'c:\ou_est_installé\python.exe';
    Proc.Parameters.Add('c:\truc\monscript.py');
    proc.Options    := [poUsePipes, poStderrToOutPut];
    Proc.Input.Write(mesDatas, len(mesDatas))
    ...
    retour_python_via_print := Proc.Output.Read(...)
    Citation Envoyé par hlmhv Voir le message
    Ok çà je peux faire, sauf que je ne comprends pas bien comment utiliser input()
    Difficile de faire plus simple, cette fonction lit une ligne dans stdin. A toi de savoir ce que tu as passé dans stdin via pascal (une simple commande "droite\n" comme mon exemple) ou le contenu d'un fichier json (sans retour à la ligne), cela ne change rien pour python
    le retour de input() python correspond à une ligne envoyée via pascal

  19. #39
    Membre confirmé Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Par défaut
    Citation Envoyé par papajoker Voir le message
    ? Lazarus permet avec une simple option à la compilation de générer un programme en Qt ou Gtk sans le moindre changement dans le code donc c'est ce que tu utilises déjà
    Encore jamais essayé (mais y a tant et tant de chose qu'on ignore et celles aussi qu'on ignore ignorer.. )
    J'essaierai aussi un jour, mais comme je te le disais, j'aurais aimé avoir un RAD en Python, mais bon j'ai sans doute été trop gâté par Borland, puis Delphi, puis Lazarus dont le rad, faut bien le dire, est très facile et agréable à utiliser..

    Citation Envoyé par papajoker Voir le message
    des pistes, je ne suis pas un moteur de recherche...
    Je rappelle aussi que je n'ai JAMAIS considéré les intervenants comme des larbins, et que je me sers avant tout de l'aide que je peux trouver seul.
    Je ne fais appel à l'aide que quand je ne trouve pas. Et entre nous, le forum c'est aussi un peu pour cela non?
    Et pour partager: si je trouve le moyen d'interfacer l'EV3 comme je veux le faire, c'est avec plaisir que je partagerai.
    Mais trouver des gens assez bizarres pour vouloir faire du Lego en Pascal cela risque d'être difficile..




    Citation Envoyé par papajoker Voir le message
    ? difficile ... python c:\truc\monscript.py juste à voir si il est bien configuré dans ton path, sinon tu donnes le chemin de python (c:\ou_est_installé\python c:\truc\monscript.py)
    En pascal, très compliqué aussi (voir autre forums)
    [CODE]Proc.Executable := 'c:\ou_est_installé\python.exe';
    Proc.Parameters.Add('c:\truc\monscript.py');
    proc.Options := [poUsePipes, poStderrToOutPut];
    Proc.Input.Write(mesDatas, len(mesDatas))
    ...
    retour_python_via_print := Proc.Output.Read(...)


    Difficile de faire plus simple, cette fonction lit une ligne dans stdin. A toi de savoir ce que tu as passé dans stdin via pascal (une simple commande "droite\n" comme mon exemple) ou le contenu d'un fichier json (sans retour à la ligne), cela ne change rien pour python
    le retour de input() python correspond à une ligne envoyée via pascal

    Ben tu vois, que ce n'est pas si facile et qu'un novice peut ne pas y arriver sans ce petit coup de pouce que tu veux bien me donner!

    Ceci étant, que se passe-t'il si un processus envoie une info pendant que le suivant tente de lire? Y a pas conflit?

    Allez, bonne fin de soirée!

  20. #40
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par hlmhv Voir le message
    Ceci étant, que se passe-t'il si un processus envoie une info pendant que le suivant tente de lire? Y a pas conflit?
    Tu parles ici de pascal donc pas notre problème
    Dans le second cas, je ne parle que de lancer un seul TProcess ! ensuite, on utilise que input et output. Et oui, surtout en graphique il faut éviter les blocages (attente de output), mais ici c'est une question purement pascal. En python on sait faire, si pascal non, alors c'est lui le jouet.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/01/2016, 20h34
  2. AttributeError: 'module' object has no attribute 'ipv4_cksum
    Par comtention dans le forum Général Python
    Réponses: 6
    Dernier message: 05/10/2012, 18h09
  3. Selenium - AttributeError: 'module' object has no attribute
    Par bender1979 dans le forum Général Python
    Réponses: 4
    Dernier message: 09/11/2010, 22h03

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