Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

script python sous debian wheezy

8 réponses
Avatar
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+

8 réponses

Avatar
Pierre Maurette
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
Avatar
Francois Lafont
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
Avatar
Tonton Th
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/
Avatar
Francois Lafont
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
Avatar
Alain Ketterlin
Bruno writes:

#! /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.
Avatar
Alain Ketterlin
Pierre Maurette writes:

#! /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.
Avatar
Pierre Maurette
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
Avatar
Francois Lafont
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