Versuch, casperjs unter Ubuntu 12.04 zum Laufen zu bringen. Nach der Installation beim Ausführen erhalte ich:
09:20 $ ll /usr/local/bin/casperjs
lrwxrwxrwx 1 root root 26 Nov 6 16:49 /usr/local/bin/casperjs -> /opt/casperjs/bin/casperjs
09:20 $ /usr/bin/env python --version
Python 2.7.3
09:20 $ cat /opt/casperjs/bin/casperjs | head -4
#!/usr/bin/env python
import os
import sys
09:20 $ casperjs
: No such file or directory
09: 22 $ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
[GCC 4.6.3] on linux2
Python ist also vorhanden und lauffähig, casperjs zeigt auf die richtige Stelle und es ist ein Python-Skript. Aber wenn ich es laufen lasse, erhalte ich "keine solche Akte".
Ich kann das Problem beheben, indem ich die erste Zeile der casperjs-Python-Datei ändere von:
#!/usr/bin/env python
zu:
#!/usr/bin/python
Ergebnis:
$ casperjs --version
1.1.0-DEV
Ich habe es geschafft, es zu beheben, aber ich frage mich, warum es nicht funktioniert hat #!/usr/bin/env python
, da dies eine normale Interpreterzeile zu sein scheint. Habe ich etwas falsch konfiguriert?
Hier sind die Schritte, um casperjs zu bekommen:
$ git clone git://github.com/n1k0/casperjs.git
$ cd casperjs
$ ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs
$ casperjs
: No such file or directory
strace /usr/local/bin/casperjs
auf der nicht funktionierenden Version zu laufen? Wäre hilfreich, wenn wir sehen könnten, welche Dateien env ausführt und ob env Python nicht findet oder Python das Skript nicht öffnet.: No such file or directory
der Ausgabe ausgegeben wurden und versuchte Ausführungen enthalten. Ich habe gerade Gilles 'Antwort gesehen. Suchen Sie in der Ausgabe nach Linien, die aussehenexecve("/usr/bin/python\r", ...)
. ]Antworten:
Wenn Sie den Fehler ": Keine solche Datei oder kein solches Verzeichnis" sehen (mit nichts vor dem Doppelpunkt), bedeutet dies, dass Ihre shebang-Zeile am Ende einen Zeilenumbruch hat, vermutlich, weil sie unter Windows bearbeitet wurde (wobei CR, LF als Zeichen verwendet wird) Zeilentrenner). Das CR-Zeichen bewirkt, dass der Cursor an den Anfang der Zeile zurückspringt, nachdem die Shell den Anfang der Nachricht gedruckt hat, sodass Sie nur den Teil nach CR sehen, der die Interpreterzeichenfolge beendet, die Teil der Fehlermeldung ist.
CR entfernen: Die Shebang-Linie muss ein Unix- Zeilenende haben (nur Zeilenvorschub). Python selbst erlaubt CRLF-Zeilenenden, sodass die CR-Zeichen in anderen Zeilen nicht weh tun. Shell-Skripte müssen dagegen frei von CR-Zeichen sein.
Um die Windows-Zeilenenden zu entfernen, können Sie dos2unix verwenden :
oder sed:
Wenn Sie Skripte unter Windows bearbeiten müssen, verwenden Sie einen Editor, der mit Unix-Zeilenenden fertig wird (dh etwas, das weniger verrückt ist als Notepad), und stellen Sie sicher, dass es so konfiguriert ist, dass Unix-Zeilenenden (dh nur LF) beim Bearbeiten einer Unix-Datei geschrieben werden.
quelle
^M
am Ende. Ich bin hier ausschließlich in Ubuntu, aber gedit setzt das manchmal ein, also bin ich zu Geany gegangen. Auf jeden Fall wird es einen anderen Fehler geben und das ist nicht der Fehler, den ich sehe.^M
andere Art, CR zu sagen.#!/usr/bin/env python
(ohne einen CR hinzuzufügen), funktioniert es.\r
= Unicode U + 0D = ^ M (Strg + M) und LF =\n
= Unicode U + A0 = ^ J (Strg + J)Ich verwende Visual Studio Code und bin neu im Texteditor. Ich habe den gleichen Fehler erhalten und manuell versucht, indem ich die Schritte in diesem Beitrag befolge. Das hat bei mir nicht funktioniert. In Visual Studio Code bietet die untere rechte Ecke jedoch eine Option, um im laufenden Betrieb zwischen CR und LF zu wechseln. Das Problem wurde behoben. Ich bin nicht sicher, ob dies zutrifft, aber wenn Sie in einem Texteditor programmieren, kann dies eine einfache Antwort sein, indem Sie eine Schaltfläche zum Umschalten bereitstellen.
quelle