ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว แต่ฉันเห็นได้!


11

ฉันพยายามเรียกใช้สคริปต์ python บน Raspberry PI ที่ไม่มีส่วนหัวโดยใช้ winSCP และได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.

เมื่อฉันลองและเรียกใช้จาก terminal ฉันได้รับ:

: No such file or directory.

ฉันลองสคริปต์ python ที่คล้ายกันในไดเรกทอรีเดียวกันกับ python shebang ที่เหมือนกันการอนุญาตแบบเดียวกันและการใช้ pi ผู้ใช้เดียวกันและใช้งานได้

ฉันยังทำlsและฉันสามารถดูไฟล์ได้ดังนั้นฉันจึงไม่รู้ว่าทำไมมันไม่ทำงาน


1
คุณแก้ไข `areadetect_movie_21.py 'ใน Windows หรือไม่ หากคุณไม่ได้เห็นaskubuntu.com/a/372691นี้
Arkadiusz Drabczyk

ใช่ในคราสทำไม?
reggie

ฉันแก้ไขความคิดเห็นหลังจากเพิ่มแล้ว ดูaskubuntu.com/a/372691นี้
Arkadiusz Drabczyk

ใช่ใช่ใช่มันใช้งานได้ขอบคุณมาก! คุณสามารถแปลงความคิดเห็นของคุณเป็นคำตอบเพื่อให้ฉันยอมรับได้
reggie

ตกลงฉันทำแล้ว :)
Arkadiusz Drabczyk

คำตอบ:


28

จากAskUbuntuให้ตอบโดยGilles :

หากคุณเห็นข้อผิดพลาด“: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” (โดยที่ไม่มีอะไรมาก่อนเครื่องหมายโคลอน) แสดงว่าบรรทัด shebang ของคุณมีการขึ้นบรรทัดใหม่ในตอนท้ายอาจสันนิษฐานได้ว่ามันถูกแก้ไขภายใต้ Windows (ซึ่งใช้ CR, LF เป็น ตัวแยกบรรทัด) อักขระ CR ทำให้เคอร์เซอร์เลื่อนกลับไปที่จุดเริ่มต้นของบรรทัดหลังจากเชลล์พิมพ์จุดเริ่มต้นของข้อความและเพื่อให้คุณเห็นเฉพาะส่วนหลังจาก CR ซึ่งสิ้นสุดสตริงล่ามที่เป็นส่วนหนึ่งของข้อความแสดงข้อผิดพลาด

ลบ CR: บรรทัด shebang ต้องมีการสิ้นสุดบรรทัด Unix (linefeed เท่านั้น) Python อนุญาตการสิ้นสุดบรรทัด CRLF ดังนั้นอักขระ CR ในบรรทัดอื่น ๆ จะไม่เจ็บ เชลล์สคริปต์ในอีกทางหนึ่งต้องไม่มีอักขระ CR

ในการลบการจบบรรทัด Windows คุณสามารถใช้dos2unix :

sudo dos2unix / usr / local / bin / casperjs

หรือ sed:

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

หากคุณต้องแก้ไขสคริปต์ใน Windows ให้ใช้โปรแกรมแก้ไขที่ลงท้ายด้วย Unix line endings (เช่นบางอย่างที่สมองตายน้อยกว่า Notepad) และตรวจสอบให้แน่ใจว่ามีการกำหนดค่าให้เขียน Unix line endings (เช่น LF เท่านั้น) เมื่อแก้ไขไฟล์ Unix


1
ฉันเปิดไฟล์บน pi ผ่าน ssh ใน notepad บน windows PC ของฉันและลบ carriage return และใช้งานได้ :) ขอบคุณมาก
reggie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.