Probleme pour executer python

Résolu/Fermé
krbpro2006 Messages postés 65 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 15 décembre 2020 - Modifié par krbpro2006 le 26/03/2015 à 02:17
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 - 28 mars 2015 à 20:52
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

mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
Modifié par mamiemando le 27/03/2015 à 00:58
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
krbpro2006 Messages postés 65 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 15 décembre 2020 5
27 mars 2015 à 21:56
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
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
28 mars 2015 à 20:52
Pas compris ce que tu voulais dire mais si c'est plus clair pour toi... c'est l'essentiel :-)
0