Probleme pour executer python

Résolu
krbpro2006 Messages postés 74 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je suis sous linux kubuntu 14.10,j'ai installé la dernière version de iphython pour apprendre a programmer.
lorsque je programme directement dans la Konsole il n'y a aucun problème,mais lorsque j'enregistre le fichier pour l'exécuter rien ne se passe.
il parait qu'il faut ajouter le chemin de exécutable ipython dans sa code source,mais si je le fais aussi rien ne se passe.
je suis dans l'impasse et j'arrive très difficilement a changer les droits d'accès d'un fichier pour qu'il soit exécutable.
voici le répertoire ou se trouve iphyton : /usr/bin/idle-phyton3.4
j'aimerai un peu d'aide et aussi comment changer les droits d'un fichier et ou dossier
merci d'avance et bonne journée

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Je pense que tu mélanges plusieurs choses. Je te propose de reprendre les choses dans l'ordre.

    1) Les interpréteurs python

    Tu peux utiliser un interpreteur python (par exemple la commande
    python
    ou
    ipython
    ) afin de lancer en mode interactif des commandes python et évaluer leur résultat.

    (mando@velvet) (~) $ python
    Python 2.7.8 (default, Oct 18 2014, 12:50:18)
    [GCC 4.9.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> print "coucou"
    coucou


    ipython
    présente des avantages comparé à
    python
    , notamment l'auto-complétion. Bon mais en soit il n'apporte rien d'autre que du "confort".

    2) Scripts python

    La deuxième manière de faire du python, c'est d'écrire avec un bon vieux éditeur texte, créer un script python (par exemple
    toto.py
    ) dans lequel tu écriras du code python.

    from __future__ import print_function
    import sys
    
    def main():
        print('coucou')
        return 0
    
    if __name__ == '__main__':
        sys.exit(main())


    On voit sur ces quelques lignes que comparé à ce qu'on aurait tapé dans l'interpréteur python, on a ici pris le soin de définir une fonction main (qui sert notamment à récupérer les paramètres passés au script et contrôler la valeur que ce script retourne au shell).

    À ce stade on peut parfaitement exécuter le script comme suit :

    python /home/titi/toto.py


    (ou même via
    ipython
    ).

    3) Associer un script à un interpréteur

    Mais disons que ce n'est pas très pratique, car on aimerait pouvoir omettre l'interpréteur. C'est pourquoi on ajoute généralement en début de script une première ligne qui le précise (c'est une notion qu'on retrouve en shell, en perl ou en ruby). Bien entendu on préférera
    python
    sur
    ipython
    (le premier étant l'interpréteur standard).

    #/usr/bin/python
    
    from __future__ import print_function
    import sys
    
    def main():
        print('coucou')
        return 0
    
    if __name__ == '__main__':
        sys.exit(main())


    4) Lancer un script sans préciser l'interpréteur à l'exécution

    Maintenant on peut modifier les droits de notre script et l'exécuter sans préciser que l'interpréteur est python :

    chmod a+x /home/titi/toto.py
    /home/titi/toto.py


    Note que si tu es positionné dans /home/toto tu pourrais lancer :

    cd /home/titi
    chmod a+x toto.py
    ./toto.py


    Note que le
    ./
    est important car /home/titi n'est a priori pas dans ton PATH.

    5) Amélioration : ne pas préciser le chemin de l'interpréteur

    Revenons au script. Là encore ce n'est pas super, car on présume que python est forcément installé dans
    /usr/bin
    . Même si c'est généralement le cas, c'est un peu cavalier et on aimerait s'abstraire de cette considération. C'est pourquoi on passe plutôt par la commande
    env
    .

    Histoire d'être carré on va aussi préciser l'encodage, ça évitera que python soit mécontent si tu mets des caractères accentués dans ton fichier (dans les commentaires notamment). Ce que tu vois ci-dessous est donc selon moi la manière "propre" d'écrire le script d'exemple.

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from __future__ import print_function
    import sys
    
    def main():
        print('coucou')
        return 0
    
    if __name__ == '__main__':
        sys.exit(main())


    Bonne chance
    1
    1. krbpro2006 Messages postés 74 Statut Membre 5
       
      mille mercis à vous,je commence à saisir maintenant .Le livre que j'ai ne l'a pas expliquer ainsi,ils avait dit que contrairement à C++ on n'a pas besoin de faire appel à des bibliothèques,mais la si j'ai bien saisi vous avez importer la fonction PRINT et SYS.
      merci et bonne journée
      0
    2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
       
      Pas compris ce que tu voulais dire mais si c'est plus clair pour toi... c'est l'essentiel :-)
      0