Probleme pour executer python [Résolu/Fermé]

Signaler
Messages postés
65
Date d'inscription
dimanche 23 octobre 2011
Statut
Membre
Dernière intervention
15 décembre 2020
-
Messages postés
29800
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
6 mai 2021
-
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


A voir également:

1 réponse

Messages postés
29800
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
6 mai 2021
7 088
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
65
Date d'inscription
dimanche 23 octobre 2011
Statut
Membre
Dernière intervention
15 décembre 2020
4
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
Messages postés
29800
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
6 mai 2021
7 088
Pas compris ce que tu voulais dire mais si c'est plus clair pour toi... c'est l'essentiel :-)