Probleme pour executer python
Résolu
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
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
-
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 commandepython
ouipython
) 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 exempletoto.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 viaipython
).
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érerapython
suripython
(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 commandeenv
.
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