python skripte mit shebang ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 12.11.2008 20:14:27

Hallo Leute,

hoffe ihr könnt mir helfen. Habe n kleines python skript das in der ersten zeile

Code: Alles auswählen

#!/usr/bin/env python
verwendet. installiert ist unter /usr/bin/ python2.4 u python2.5. python ist symlinked zu python2.5. leider funktioniert das nicht. der python interpreter wird nicht aufgerufen. wenn ich mit "python programm.py" aufrufe passt es. mit "./programm.py" eben nicht. habe auch schon

Code: Alles auswählen

#!/usr/bin/python
und

Code: Alles auswählen

#!/usr/bin/python2.5
versucht. das hat aber keinen unterschied gemacht.

könnt ihr mir helfen?

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: python skripte mit shebang ausführen

Beitrag von Duff » 12.11.2008 20:39:48

Kenne mich jetzt auch nicht wirklich mit der Programmiersprache python aus, aber bei mir funktioniert folgendes:

Code: Alles auswählen

daniel@laptop:~/dbox$ which python
/usr/bin/python
daniel@laptop:~/dbox$ scr
daniel@laptop:~/scripts$ vi test.py
daniel@laptop:~/scripts$ chmod +x test.py 
daniel@laptop:~/scripts$ ./test.py 
Hello World
daniel@laptop:~/scripts$ cat test.py
#!/usr/bin/python

print "Hello World";
Oh, yeah!

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 12.11.2008 20:54:26

danke für deine antwort!

mmh....das ist total komisch....dieses kleine beispiel mit der gleichen shebang zeile funktioniert bei mir auch einwandfrei!
wenn ich aber bei meinem skript die gleiche shebang zeile verwende kommt auf der console die fehlermeldung:

Code: Alles auswählen

: No such file or directory1: #!/usr/bin/python
(die fehlermeldung motzt insgesamt über jede zeile des skripts --> nicht pyhton-interpretiert)

versteh das nicht...wüsste nicht wo da der unterschied liegt.

anmerkung: chmod hab ich natürlich gemacht!

hier mal noch die ersten zeilen der consolen-fehlerausgabe:

Code: Alles auswählen

: No such file or directory1: #!/usr/bin/python
: command not foundy: line 2: 
: command not foundy: line 3: programmbeschreibung
: command not foundy: line 4: 
./websnifferStart.py: line 5: import: command not found
./websnifferStart.py: line 6: import: command not found
./websnifferStart.py: line 7: import: command not found
: command not foundy: line 8: 
: command not foundy: line 9: 
: command not foundy: line 10: 
diese ersten zeilen der fehlermeldung beziehen sich auf folgenden teil des skripts (inkl leerer zeilen):

Code: Alles auswählen

#!/usr/bin/python

"""programmbeschreibung"""

import httplib
import string
import os



Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: python skripte mit shebang ausführen

Beitrag von Duff » 12.11.2008 21:02:34

Wir rufst du das Skript denn auf?

Bei mir kommen da keine Fehlermeldungen.

./script.py
Oh, yeah!

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 12.11.2008 21:07:51

genauso! mann des gibts doch ned....sicher irgendeine lappalie...aber ich hab alles mehrfach überprüft!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: python skripte mit shebang ausführen

Beitrag von Duff » 12.11.2008 21:10:00

Code: Alles auswählen

daniel@laptop:~/scripts$ cat test.py 
#!/usr/bin/python

print "Hello World";

"""programmbeschreibung"""

import httplib
import string
import os
daniel@laptop:~/scripts$ ./test.py 
Hello World
Dass habe ich gemacht.
Oh, yeah!

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 12.11.2008 21:16:34

das funktioniert bei mir auch!

aber du hast mich auf ne idee gebracht:
ich habe das skript in der arbeit unter windoof geschrieben. zwar au mit der python IDLE aber vll ist da trotzdem irgendwas anders. werde das jetzt nochmal komplett abtippen.....

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: python skripte mit shebang ausführen

Beitrag von Duff » 12.11.2008 21:24:38

Mit welchem Editor öffnest du das Skript denn?

Da sind bestimmt noch die Steuerungszeichen von Windows drin...
(dos2unix)
Oh, yeah!

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 12.11.2008 21:26:51

das nennt sich einfach python IDLE /phython shell...idle findest mit synaptic....aber das wird es sein....ich erinnere mich dunkel an einen unterschied bezügl des zeilenumbruchs unter windoof u unix....aber kanns grad ned ganz zuordnen *c-buch such*

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 12.11.2008 21:47:04

lol...ok..dass wars nicht...komplett abgetippt...gleiches verhalten:(

Methusalix

Re: python skripte mit shebang ausführen

Beitrag von Methusalix » 13.11.2008 00:31:41

Hallo,

poste doch mal Deinen Programmcode. Ich habe die Fragestellung so verstanden,
das das Programm gar nicht ausgeführt wird !?!? Dann macht die Fehlermeldung in
Deinem zweiten Post allerdings keinen Sinn....Ich habe den Eindruck, das da noch
mehr verquer ist.

Gruß Matthias

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 13.11.2008 01:33:08

hallo Matthias,

doch das programm wird ausgeführt. aus der idle heraus --> "run module" funktioniert es wunderbar. wenn ich das prog auf der console mit "python program.py" aufrufe funktioniert es auch wunderbar.
ich dachte wenn ich den shebang wie im post beschrieben schreibe, dass ich dann statt "python program.py" mit "./program.py" das skript ausführen kann.

oder liege ich da falsch?

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: python skripte mit shebang ausführen

Beitrag von Duff » 13.11.2008 07:48:18

Das ist natürlich richtig.

Aber hast du mal überprüft, wo das Programm bei dir überhaupt liegt?

Als Beispiel:

Code: Alles auswählen

duff@beer:~/scripts$ which python
/usr/bin/python
duff@beer:~/scripts$ whereis python
python: /usr/bin/python /usr/bin/python2.5 /etc/python /etc/python2.5 /usr/lib/python2.5 /usr/lib/python2.4 /usr/local/lib/python2.5 /usr/include/python2.5 /usr/include/python2.4 /usr/share/python /usr/share/man/man1/python.1.gz
duff@beer:~/scripts$ ll /usr/bin/python
lrwxrwxrwx 1 root root 9 29. Sep 15:32 /usr/bin/python -> python2.5
Bei mir ist auf /usr/bin/python ein Link zu python2.5
Oh, yeah!

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 13.11.2008 14:14:00

Hallo,

ja habe ich. Sieht bei mir so aus wie bei dir! Auch der link von /usr/bin/python auf /usr/bin/python2.5. Und das kleine bsp-skript das du au versucht hast hat ja funktioniert.

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 13.11.2008 14:17:44

kleine Anmerkung: ich seh hier gerade, dass die uhrzeit meins letzten postes eine h zu weit in der zukunft liegt. habt ihr dafür eine erklärung?
BTW: am meisten beschäftigt mich an meinem pc daheim das uhrzeit problem. der zeigt nämlich leider die falsche uhrzeit an (mit u ohne UTC; sync mit ntp)

Methusalix

Re: python skripte mit shebang ausführen

Beitrag von Methusalix » 14.11.2008 01:35:27

Hallo,
warum zeigst Du uns nicht Deinen Programmcode? Aus welchem Verzeichnis heraus startest
Du das Programm? - Dein ausführbares Programm, nicht Python (ich glaube, das meinte Duff).
Wenn Du hier nicht weiter kommst, dann sicher hier: http://www.python-forum.de
Gruß Matthias

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 14.11.2008 15:15:02

Hallo,

ok...damit der nicht so lang ist hier das original...war von jmd anderem zeigt aber den gleichen fehler:

Code: Alles auswählen

#!/usr/bin/python

import httplib
import string
import os



opera = { "User-Agent":"Opera/9.20 (Windows NT 6.0; U; en)",
          "Accept-Charset":"ISO-8859-1, UTF-8; q=0.7, *; q=0.7",
          "Cache-Control":"no",
          "Accept-Language":"de, en; q=0.7, en-us; q=0.3",
          "Referer":"http://python-dev.blogspot.com" }


domain = 'www.harlekin-bowling.de'
path = '/'
method = 'GET'
params = None
profile = opera


conn = httplib.HTTPConnection (domain)
conn.request(method, path, params, profile)

stat = conn.getresponse()

headers = stat.getheaders()
version = stat.version
status = stat.status
reason = stat.reason
data = stat.read()

conn.close()



file_name = domain.replace (".", "-")
file_object = open (file_name, "w")
file_object.write (data)
file_object.close()


print "\n"
print "WEBSNIFFER 0.1"
print 20 * "+"
print "\n"
print "Header (Client)"
print 20 * "-"
for key, value in profile.iteritems():
        print "%s \t %s" % (key, value)
print 20 * "-"
print "\n"
        
print "Header (Server)"
print 20 * "-"
print "HTTP \t %s" % (version)
print "Status \t %s (%s)" % (status, reason)
for key, value in headers:
        print "%s \t %s" % (key, value)
print 20 * "-"
print "\n"

print "Quelltext"
print 20 * "-"
print "Quelltext geschrieben in File:"
print file_name
print 20 * "-"
print "\n"
daheim starte ich das aus dem verzeichnis /home/boyscout/software/python/websniffer/

ok danke....werde mir das andere forum au mal angucken.

Methusalix

Re: python skripte mit shebang ausführen

Beitrag von Methusalix » 14.11.2008 23:15:58

Hallo,
das Script läßt sich bei mir problemlos auf die oben genannten Arten starten.
Ich hätte ja noch auf Probleme mit $PATH getippt, aber das scheint es auch nicht
zu sein.
Gruß Matthias

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 15.11.2008 04:35:30

ok...versteh ich ned! na ja...muss ich wohl damit leben.

Danke trotzdem für eure hilfe!

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 18.11.2008 01:39:41

Hallo Leute,

also wen es interessiert:
am datei-anfang befand sich http://de.wikipedia.org/wiki/Byte_Order_Mark das unter windoof gesetzt wird. das konnte ich mit nem hex-editor einfach entfernen. der zweite fehler war dass ich in der IDLE utf-8 eingestellt habe...der konsole haben dann die umlaute nicht geschmeckt....nachdem ich beide fehler abgestellt habe funktioniert alles wie es soll!

danke an alle die geholfen haben!

Benutzeravatar
duese
Beiträge: 651
Registriert: 12.07.2006 15:27:20
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: python skripte mit shebang ausführen

Beitrag von duese » 18.11.2008 07:08:28

B0ysc0ut hat geschrieben:[...]wenn ich mit "python programm.py" aufrufe passt es. mit "./programm.py" eben nicht.[...]
Nur so ein Schuß ins Blaue: Ich glaube, Du musst die Datei ausführbar machen, damit der letzte Aufruf funktioniert:

Code: Alles auswählen

chmod u+x programm.py
Gruß,
Thomas

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: python skripte mit shebang ausführen

Beitrag von Duff » 18.11.2008 08:16:52

Wenn die Datei nicht ausführbar ist, sollte aber auch eine entsprechende Fehlermeldung kommen.
Oh, yeah!

Benutzeravatar
duese
Beiträge: 651
Registriert: 12.07.2006 15:27:20
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: python skripte mit shebang ausführen

Beitrag von duese » 18.11.2008 11:44:27

Stimmt auch wieder. :-(

B0ysc0ut
Beiträge: 21
Registriert: 31.08.2008 19:57:44

Re: python skripte mit shebang ausführen

Beitrag von B0ysc0ut » 18.11.2008 18:51:25

ne ne die war scho ausführbar....an chmod denk ich;)...u nachdem ich die 2fehler behoben hatte hats ja einwandfrei funktioniert...

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: python skripte mit shebang ausführen

Beitrag von Twilo » 23.11.2008 17:52:32

Hallo,

mach das nächste mal ein "hd filename"

wenn die Ausgabe nicht mit

Code: Alles auswählen

00000000  23 21 2f 75 73 72 2f 62  69 6e 2f ...
anfängt ist etwas faul
am ende der Shebang darf auch kein "0d 0a" kommen, sondern nur ein "0a".

Code: Alles auswählen

cat test.py
#!/usr/bin/env python
print 'hello World'

% hd test.py
00000000  23 21 2f 75 73 72 2f 62  69 6e 2f 65 6e 76 20 70  |#!/usr/bin/env p|
00000010  79 74 68 6f 6e 0a 70 72  69 6e 74 20 27 68 65 6c  |ython.print 'hel|
00000020  6c 6f 20 57 6f 72 6c 64  27 0a                    |lo World'.|
0000002a
mfg
Twilo

Antworten