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 :

.py fonctionne mais pas le .pyw


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut .py fonctionne mais pas le .pyw
    Bonjour à tous,

    Je suis nouveau sur ce forum, n'ai pas vraiment l'habitude de poster sauf quand, comme aujourd'hui, je n'ai trouvé nul part réponse à mes questions.
    Je ne suis pas non plus un expert python et bricole mes scripts avec ce que je trouve ici et là !

    Pour en venir au fait, j'ai un script, qui est une boucle infinie et qui tourne parfaitement en .py.
    Le script tourne sur python 2.7.14 sous Windows, naturellement une fenetre cmd s'ouvre pendant l'exécution infinie de mon script.

    Pour remédier à cela j'ai trouvé la solution de passer en .pyw. Alors certes aucune fenêtre ne s'ouvre mais le script ne s'exécute pas, ou se stop très rapidement. J'ai cette information car le but du script est d'écrire des données en base MSSQL. en .py j'ai de nouvelles données toutes les 10min, et pas en .pyw

    Le script intègre les bibliothèques pyodbc, OpenOPC, time et datetime. Si cela peut aider.

    Aussi je vous met le code en gardant en tête que celui fonctionne en .py, mais que peut-être des éléments font échouer le .pyw

    Merci à vous par avance !

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #!/usr/bin/python
     
    import pyodbc 
    import time
    import OpenOPC
    import datetime
     
     
     
    #Connect to sql databse on this computer
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=MONSERV;DATABASE=MABASE;UID=MONUSER;PWD=MONPASS')
    cursor = cnxn.cursor()
     
    while True:
     
        #Launch stored procedure to get the information if we are in the concerned period for curtailment
        cursor.execute("EXEC MAPROCEDURE")
        rc = cursor.fetchval()
        #print rc
     
        #Current_date_time and format
        now = datetime.datetime.now()
        now_format = now.strftime("%Y-%m-%d %H:%M")
        now_format = str(now_format)
     
     
        #Get the current minute
        minute_maj = time.strftime("%M")
        if minute_maj[-1:] == '0' and minute[-1:] == '9':
            #Case of end of 10min point
            nv_10min = 1
            minute = minute_maj
     
            #Get 10min average on signal from DB
            cursor.execute("SELECT MONFIELD FROM MATABLE ")
            avg = cursor.fetchval()
            avg = ("%.2f" % avg)
            avg = str(avg)
            #Erase results in the realtime table
            cursor.execute("DELETE FROM MATABLE")
            cnxn.commit()
            #Insert into AVG table the result for the 10min point
            cursor.execute("INSERT INTO MATABLE VALUES('" + now_format + "','MAVALUE'," + avg + ")")
            cnxn.commit()
     
        else:
            #Case of pending 10min point
            nv_10min = 0
            minute = minute_maj
     
     
            #Connect to OPC server
            opc = OpenOPC.client()
            opc.connect('OPCSERVER')
            #Get value of current windspeed/round it/Send it to DB
            value = opc['SIGNAL']
            value = ("%.2f" % value)
            value = str(value)
     
     
            cursor.execute("INSERT INTO MATABLE VALUES('MAVALUE'," + value + ")")
            cnxn.commit()
            opc.close()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 237
    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 237
    Points : 36 687
    Points
    36 687
    Par défaut
    Salut,

    Citation Envoyé par HugoM75 Voir le message
    Pour remédier à cela j'ai trouvé la solution de passer en .pyw. Alors certes aucune fenêtre ne s'ouvre mais le script ne s'exécute pas, ou se stop très rapidement.
    La différence est que les descripteurs stdout, stderr,... ne sont pas initialisés.
    Et comme vous êtes sur Python2, la moindre écriture sur ces descripteurs va planter sans que vous sachiez pourquoi...
    Essayez en redirigeant les E/S avec pythonw script.py 1>stdout.log 2>stderr.log et regardez ce qu'il y a dans les fichiers .log.

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

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Hi wiztricks
    Thank you very much for this interresting trick to debug !

    The problem wasn't due to .pi & .piw at all, just a matter of bad luck.

    The problem was on a variable which was, sometimes, in None due to a problem of connection to OPC server.

    Thank you !

Discussions similaires

  1. jar executable fonctionne mais pas trop
    Par ng.phung dans le forum Langage
    Réponses: 6
    Dernier message: 02/05/2007, 10h26
  2. mysql fonctionne, mais pas avec un port
    Par spekal dans le forum Installation
    Réponses: 2
    Dernier message: 23/01/2007, 19h30
  3. [UBUNTU] La gravure fonctionne mais pas le démarrage
    Par khaskhos dans le forum Ubuntu
    Réponses: 12
    Dernier message: 18/01/2007, 16h37
  4. Flash - aperçu fonctionne mais pas swf seul
    Par LeBernie dans le forum Flash
    Réponses: 11
    Dernier message: 17/11/2006, 18h06
  5. [FLASH 8] : FLA qui fonctionne mais pas le SWF
    Par xtaze dans le forum Flash
    Réponses: 9
    Dernier message: 24/10/2006, 10h14

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