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 :

Exécution de code python


Sujet :

Python

  1. #1
    P.G
    P.G est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Points : 73
    Points
    73
    Par défaut Exécution de code python
    Bonjour,

    Je débute en python et linux et découvre actuellement tout cela sur le
    RaspberryPI.

    J'ai un premier programme python ( Debian wheezy python 2.7 )
    qui s'exécute soit par python helloworld.py soit par ./helloworld.py le droit
    d'éxécution étant ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/usr/bin/env python
    print "Hello, New Best World!"
    Je fait la même chose avec un code si-dessous, celui ci ne fonctionne
    que lancé avec python calculette.py et non pas directement avec
    ./calculette.py les droits d'exécution ont été modifiés.
    Voilà le code :

    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
    #!/usr/bin/env python 
    # Exemple 2 : Programme Python pour le Guide de l'utilisateur Raspberry Pi
    # VERSION PYTHON 2.7
     
    nomUtil = raw_input("Indiquez votre nom : ") 
    print "Bienvenue dans ce programme, ", nomUtil
    autreCalcul = 1 
     
    while autreCalcul == 1: 
      valeurUn = int(raw_input("Saisissez le premier nombre : ")) 
      valeurDeux = int(raw_input("Saisissez le second nombre : ")) 
      print valeurUn, "plus ", valeurDeux, "donne", valeurUn + valeurDeux
      print valeurUn, "moins", valeurDeux, "donne", valeurUn - valeurDeux
      print valeurUn, "fois ", valeurDeux, "donne", valeurUn * valeurDeux
      autreCalcul = int(raw_input("Tapez 1 pour continuer, un autre chiffre pour quitter: ")) 
    print "Fin du programme"
     
     
    # FIN DE FICHIER
    Et voilà le message d'erruer obtenu :
    pi@raspberrypi ~ $ ./calculette.py
    : Aucun fichier ou dossier de ce type

    Merci pour votre aide.

    P.G

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Et que sort la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pi@raspberrypi ~ $ python calculette.py
    Edit:
    Oops, après relecture, vous avez déjà dit "ça fonctionne". Mais si le script est bien exécutable, il faudrait voir ce que retourne le "/usr/bin/env python"

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

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu dois le rendre exécutable pour cela, mais ça n'a pas grand intérêt tant que tu n'installeras pas ce programme, dans /usr/bin par exemple.

    Le mode normal c'est bien python monappli.py

  4. #4
    P.G
    P.G est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Points : 73
    Points
    73
    Par défaut Suite
    Merci pour vos réponses,

    Ce qui m'interroge c'est pourquoi la procédure sur helloworld.py fonctionne
    ./helloworld.py est ok alors que pour calculette.py seul le lancement avec python calculette.py fonctionne. Le lancement direct ne fonctionne pas.

    Les droits ont été modifié de la même manière dans les deux cas.

    Merci du coup de main.

    P.G

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    On ne peut évidemment pas deviner ce qui est sur ta machine mais pour la description que tu donnes, il semble que helloworld.py a été rendu exécutable et pas calculette.py.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par VinsS Voir le message
    On ne peut évidemment pas deviner ce qui est sur ta machine mais pour la description que tu donnes, il semble que helloworld.py a été rendu exécutable et pas calculette.py.
    Ouch! Ca dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pi@raspberrypi ~ $ ./calculette.py
    : Aucun fichier ou dossier de ce type
    Si c’était un problème de protection, ne devrait-on pas avoir:
    => c'est plutôt dans le shebang que ça se passe.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wiz@ubuntu32-ws:~/shared_folders$ ./test.py
    : No such file or directory
    mon fichier test.py est "windows":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    wiz@ubuntu32-ws:~/shared_folders$ od -ax test.py
    0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v  sp   p
               2123    752f    7273    622f    6e69    652f    766e    7020
    0000020   y   t   h   o   n  cr  nl   p   r   i   n   t  sp   (   '   f
               7479    6f68    0d6e    700a    6972    746e    2820    6627
    0000040   o   o   '   )  cr  nl
               6f6f    2927    0a0d
    On le convertit avec dos2unix:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wiz@ubuntu32-ws:~/shared_folders$ dos2unix test.py
    dos2unix: converting file test.py to Unix format ...
    Et voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wiz@ubuntu32-ws:~/shared_folders$ ./test.py
    foo
    Techniquement le shebang est récupéré par le shell qui ne trouve pas "python<cr>..."
    Python lit les scripts en mode universal: fins de lignes Windows, Unix,... sont avalées sans problèmes quelque soit l'OS.

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

Discussions similaires

  1. Fonctionnement de l'exécution du code en Python
    Par cal23 dans le forum Général Python
    Réponses: 6
    Dernier message: 06/08/2014, 22h00
  2. Exécuter code python en PHP
    Par Pchom dans le forum Langage
    Réponses: 2
    Dernier message: 20/04/2013, 17h59
  3. Exécuter un code python en C++
    Par hannibal.76 dans le forum Débuter
    Réponses: 8
    Dernier message: 24/07/2012, 16h30
  4. Exécuter du code python dans un string (python -c cmd)
    Par piloupy dans le forum Général Python
    Réponses: 2
    Dernier message: 14/11/2010, 01h10
  5. Réponses: 7
    Dernier message: 03/02/2005, 17h20

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