что может привести к тому, что скрипт не сможет найти python, когда в его строке `#! / usr / bin / env python`?

Попытка запустить casperjs на Ubuntu 12.04. После его установки при запуске я получаю:

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 присутствует и работает, casperjs указывает на правильное место, и это скрипт на python. Но когда я запускаю его, я получаю «Нет такого файла».

Я могу это исправить, изменив первую строку файла Python casperjs с:

#!/usr/bin/env python

на:

#!/usr/bin/python

Результат:

$ casperjs --version
1.1.0-DEV

Мне удалось это исправить, но мне интересно, почему это не сработало с #!/usr/bin/env python, так как это, кажется, нормальная строка интерпретатора. У меня что-то настроено неправильно?

Вот шаги, чтобы получить casperjs:

$ 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
20
задан 8 November 2013 в 01:28

2 ответа

Raha mahita ny lesoka ianao ": Tsy misy rakitra na lahatahiry toy izany" (tsy misy na inona na inona alohan'ny tsanganana), midika izany fa ny tsipika shebang anao dia misy fiverenan'ny kalesina amin'ny farany, azo inoana satria novaina teo ambanin'ny Windows (izay mampiasa CR, LF ho mpanasaraka tsipika). Ny toetran'ny CR dia mahatonga ny kursor hiverina any am-piandohan'ny tsipika aorian'ny fanontana ny fiandohan'ny hafatra ny akorandriaka ary noho izany dia ho hitanao ny ampahany aorian'ny CR izay mamarana ny tadin'ny mpandika teny izay ampahan'ny hafatra diso.

Esory ny CR: ny tsipika shebang dia mila manana tsipika Unix mifarana (linefeed ihany). Python mihitsy no mamela ny fiafaran'ny tsipika CRLF, ka tsy maratra ireo litera CR amin'ny tsipika hafa. Ny script shell raha tsy izany dia tsy tokony hisy litera CR.

Mba hanesorana ireo fiafaran'ny tsipika Windows dia azonao atao ny mampiasa dos2unix :

sudo dos2unix /usr/local/bin/casperjs

na sed:

sudo sed -i -e 's/\r$//' /usr/local/bin/casperjs

Raha tsy maintsy manitsy script ianao ao ambanin'ny Windows , ampiasao tonian-dahatsoratra izay miatrika ny fiafaran'ny tsipika Unix (izany hoe tsy misy ati-doha noho ny Notepad) ary alao antoka fa voalamina mba hanoratra ny fiafaran'ny tsipika Unix (izany hoe LF ihany) rehefa manitsy rakitra Unix.

38
ответ дан 8 November 2013 в 01:28

Я использую Visual Studio Code и новичок в текстовом редакторе. Я получал ту же ошибку и пытался вручную выполнить шаги в этом сообщении, у меня это не сработало. Однако в правом нижнем углу Visual Studio Code есть возможность переключаться между CR и LF на лету, проблема решена. Я не уверен, применимо ли это, но если вы программируете в текстовом редакторе, он может дать простой ответ, предоставив кнопку для переключения.

0
ответ дан 9 October 2019 в 12:20

Другие вопросы по тегам:

Похожие вопросы: