script python sous debian wheezy

Le
Bruno
Bonjour à tous,

Sous le répertoire /home/bruno,j'écris dans un simple fichier texte,
p1.py, le script suivant:


#! /usr/bin/env python

print("Hello World")
print()


si je lance
$python ./p1.py
cela fonctionne.

par contre aprés avoir fait un chmod 777 du fichier, si je fais
$ ./p1.py

j'ai le message

: Aucun fichier ou dossier de ce type

Je ne comprends pas pourquoi ?

Si vous avez une idée ?

A+
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Maurette
Le #23957691
Bruno :
Bonjour à tous,

Sous le répertoire /home/bruno,j'écris dans un simple fichier texte, p1.py,
le script suivant:


#! /usr/bin/env python

print("Hello World")
print()


si je lance
$python ./p1.py
cela fonctionne.

par contre aprés avoir fait un chmod 777 du fichier, si je fais
$ ./p1.py

j'ai le message

: Aucun fichier ou dossier de ce type

Je ne comprends pas pourquoi ?

Si vous avez une idée ?



Vérifiez à tout hasard même si c'est évident et que vous l'avez déjà
fait que lancer /python/ a bien l'effet attendu (lancer python en
interactif). Encore que je ne crois pas qu'un Linux tourne aujourd'hui
sans /python/ dans le PATH, et le message serait différent.
Sinon, j'ai eu le même souci, venant dans ce cas du caractère de fin de
ligne sur la première ligne. Le shell cherchait un exécutable du nom de
"python" + 0x0D, chez moi la cause en était bien entendu entre mes
Windows, subversion et paramétrage des fichiers texte dans
Eclipse/Pydev.
Regardez avec un éditeur hexa, et/ou tentez un fichier minimal tout
neuf avec un éditeur sous Linux qui ne complote pas avec l'ennemi.
Mais c'est peut-être tout à fait autre chose. Ou juste un peu autre
chose mais "un peu" du même tonneau ?

Nota: les caractères fin de ligne DOS/Windows 0D 0A ne gênent pas
l'interprêteur python. Mais la première ligne est à mon avis d'abord
analysée par le shell qui est peut-être plus pointilleux. Ou plus
sommaire dans son analyse de la ligne.


--
Pierre Maurette
Francois Lafont
Le #23957811
Bonjour,

Sans vouloir mettre en doute votre parole, c'est possible d'avoir un
copié-collé du résultat des commandes suivantes : :-)

$ whoami
$ pwd
$ ls -l | grep -E 'p1.py'
$ ./p1.py

Et avec le chemin absolu, ça passe ? (/home/bruno/p1.py)

--
François Lafont
Tonton Th
Le #23957871
On 11/12/2011 12:29 PM, Pierre Maurette wrote:

Nota: les caractères fin de ligne DOS/Windows 0D 0A ne gênent pas
l'interprêteur python. Mais la première ligne est à mon avis d'abord
analysée par le shell qui est peut-être plus pointilleux. Ou plus
sommaire dans son analyse de la ligne.



L'interprétation du shebang se passe dans le kernel.

--

Nous vivons dans un monde étrange/
http://foo.bar.quux.over-blog.com/
Francois Lafont
Le #23957861
Le 12/11/2011 12:29, Pierre Maurette a écrit :

Nota: les caractères fin de ligne DOS/Windows 0D 0A ne gênent pas
l'interprêteur python. Mais la première ligne est à mon avis d'abord
analysée par le shell qui est peut-être plus pointilleux. Ou plus
sommaire dans son analyse de la ligne.



Ah, si c'est ça le souci, je trouve que c'est bien sournois. :-)

Dans ce cas, pour le vérifier, faire :

$ cat p1.py | od -c
0000000 # ! / u s r / b i n / e n v
0000020 p y t h o n n n B l a b l a n
0000040 n
0000041

Il faut qu'après « python » il y ait soit un espace soit n mais rien
d'autre.


--
François Lafont
Alain Ketterlin
Le #23957851
Bruno
#! /usr/bin/env python
print("Hello World")
print()

par contre aprés avoir fait un chmod 777 du fichier, si je fais
$ ./p1.py
: Aucun fichier ou dossier de ce type



C'est le vrai message ?

Vraisemblablement, le caractère entre ! et / n'est pas un blanc "norma l"
(c'est un insécable, ou...) Que se passe-t-il si tu le supprimes ?

-- Alain.
Alain Ketterlin
Le #23957891
Pierre Maurette
#! /usr/bin/env python




[...]
par contre aprés avoir fait un chmod 777 du fichier, si je fais
$ ./p1.py

j'ai le message

: Aucun fichier ou dossier de ce type





[...]
Sinon, j'ai eu le même souci, venant dans ce cas du caractère d e fin
de ligne sur la première ligne. Le shell cherchait un exécutabl e du
nom de "python" + 0x0D



Bien vu. En tapant : ./p1.py 2>p1.out on voit bien ce qui se passe.

-- Alain.
Pierre Maurette
Le #23958001
Francois Lafont :
Bonjour,



Bonjour

Sans vouloir mettre en doute votre parole,



Vu le mal que font les mythomanes en tout genre à usenet,
j'apprécierais moyennement. En revanche, incompétent en Linux/Unix et
python, je l'accepte sans problème.

c'est possible d'avoir un
copié-collé du résultat des commandes suivantes : :-)

$ whoami
$ pwd
$ ls -l | grep -E 'p1.py'
$ ./p1.py

Et avec le chemin absolu, ça passe ? (/home/bruno/p1.py)



J'ai vite fait une manip sur une machine du week-end (Debian Squeeze
virtualisée) où rien n'était installé. Sous Eclipse + Pydev + EHEP
comme éditeur, tests dans un terminal bien entendu.
<code>
#! /usr/bin/env python

print 'hello'
</code>

:~/EclipseWorkspaces/C/testpy$ cat test1.py | od
-c
0000000 # ! / u s r / b i n / e n v
0000020 p y t h o n n n p r i n t ' h
0000040 e l l o ' n
0000046
:~/EclipseWorkspaces/C/testpy$ ./test1.py
hello

Je remplace les LF par des CRLF, et:

:~/EclipseWorkspaces/C/testpy$ cat test1.py | od
-c
0000000 # ! / u s r / b i n / e n v
0000020 p y t h o n r n r n p r i n t
0000040 ' h e l l o ' r n
0000051
:~/EclipseWorkspaces/C/testpy$ ./test1.py
: Aucun fichier ou dossier de ce type

Ce qui ne signifie pas pour autant que ce soit le souci de Bruno.

--
Pierre Maurette
Francois Lafont
Le #23962481
Bonsoir,

Le 12/11/2011 15:00, Pierre Maurette a écrit :

:~/EclipseWorkspaces/C/testpy$ cat test1.py | od -c
0000000 # ! / u s r / b i n / e n v
0000020 p y t h o n n n p r i n t ' h
0000040 e l l o ' n
0000046
:~/EclipseWorkspaces/C/testpy$ ./test1.py
hello

Je remplace les LF par des CRLF, et:

:~/EclipseWorkspaces/C/testpy$ cat test1.py | od -c
0000000 # ! / u s r / b i n / e n v
0000020 p y t h o n r n r n p r i n t
0000040 ' h e l l o ' r n
0000051
:~/EclipseWorkspaces/C/testpy$ ./test1.py
: Aucun fichier ou dossier de ce type

Ce qui ne signifie pas pour autant que ce soit le souci de Bruno.



Certes, mais à mon avis il y a une très grosse probabilité que ça soit ça.

--
François Lafont
Publicité
Poster une réponse
Anonyme