Warum kann der Importbefehl nicht gefunden werden?

7

Ich benutze die Funktion input von fileinput , um Skript über pipes oder input file zu akzeptieren. Hier ist das minimale Skript:

finput.py

%Vor%

Nachdem ich dieses Skript ausführbar gemacht habe, starte ich ls | ./finput.py und bekomme unexpected error message

%Vor%

Die einzige Lösung, die ich gefunden habe, ist, wenn ich vor der Import-Anweisung #!/usr/bin/env/python3 hinzufüge.

Aber dieses Problem scheint nur mit dem Modul fileinput zusammen zu hängen. Da das folgende Skript ohne shebang funktioniert hat:

fruit.py

%Vor%

Nun, was fehlt mir? Warum kann der Befehl import nicht gefunden werden, da shebang nicht erforderlich ist in finput.py ?

    
styvane 19.12.2014, 10:17
quelle

1 Antwort

22

Sie müssen Ihrem Betriebssystem mitteilen, dass es sich um ein Python-Programm handelt, andernfalls wird es als Shell-Skript interpretiert (wobei der Befehl import nicht gefunden werden kann).

Wie Sie es erkannt haben, verwenden Sie eine Shebang-Linie:

%Vor%

Dies wird nur benötigt, wenn Sie Ihr Skript wie folgt ausführen wollen: ./script.py , was Ihrem Betriebssystem sagt, dass "diese ausführbare Datei ausgeführt werden soll". Dies erfordert, dass Ihr Betriebssystem identifiziert, wie es das Programm ausführen soll, und es stützt sich (unter anderem) auf die Shebang-Linie.

Wenn Sie jedoch python script.py ausführen (was ich vermutlich für fruit.py getan habe), fragt Python Ihr Betriebssystem nicht, ob es sich um ein Python-Programm handelt oder nicht, daher spielt die Shebang-Zeile keine Rolle / p>     

Thomas Orozco 19.12.2014, 10:18
quelle

Tags und Links