Linux 터미널에서 Python 스크립트 실행

Linux 터미널에서 Python 스크립트 실행

pyAES.py라는 스크립트를 다운로드하여 Linux 데스크톱 디렉터리의 code라는 폴더에 배치했습니다.

이 예에 따르면, http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/

내가 이것을 입력하면서,

./pyAES.py -e testfile.txt -o testfile_encrypted.txt

pyAES.py 파일이 실행되어야 합니다. 그런데 이 오류가 발생해요

pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found

명령의 출력은 ls -l다음과 같습니다.

pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct  8 10:44 pyAES.py

이후의 출력입니다chmod +x

pi@raspberrypi ~/Desktop/Codes $ chmod +x pyAES.py                              pi@raspberrypi ~/Desktop/Codes $
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
pi@raspberrypi ~/Desktop/Codes $

명령을 실행하면 chmod +x pyAES.py && ./pyAES.py다음과 같은 오류가 발생합니다.

-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

/usr/bin또한 파일을 디렉토리 로 옮긴 다음 실행해 보았습니다 .

pi@raspberrypi /usr/bin $ pyAES.py
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
pi@raspberrypi /usr/bin $

파일이 /usr/bin 디렉토리에 존재하는 것을 볼 수 있지만 여전히 "해당 파일 또는 디렉토리가 없습니다"라는 오류가 표시됩니다.

Linux 터미널이 Python 스크립트를 실행하지 않는 이유를 알고 싶습니다.

답변1

귀하의 Shebang 라인이 제대로 작성되지 않은 것 같습니다. 다음과 같은 오류가 발생합니다.

-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

/usr/bin/pyAES.py첫 번째 줄을 다음으로 설정해야한다고 말하고 싶습니다 .

#!/correct/path/to/python

/correct/path/to/python다음 출력에서 ​​찾을 수 있습니다 .

type -P python

내 시스템에는 /usr/bin/python(가) 없습니다 ./usr/bin/python2

답변2

당신이 받고있는 오류는 "command not found"실행 파일이 변수 /bin/또는 /usr/bin/모든 경로에 존재하지 않기 때문에 발생합니다 $PATH.

명령을 실행하면 백엔드 셸은 PATH에서 해당 실행 파일/바이너리 /bin/ /usr/bin/등을 검색합니다.

따라서 경로가 올바르게 정의되지 않으면 이 문제에 직면하게 됩니다.

" "를 사용하면 ./command현재 디렉터리에서 명령이 실행되고 PATH 변수는 파일 이름을 검색하는 데 사용되지 않습니다.

답변3

첫 번째 장애물은 프로그램을 찾을 위치를 쉘에 알려주어야 한다는 것입니다. 디렉터리 지시문을 넣지 않으면 PATH환경 변수에 설명된 실행 파일 검색 경로에 있는 실행 파일만 실행할 수 있습니다. 현재 디렉터리를 해당 디렉터리에 넣지 않으면 검색 경로에 없습니다. 그러니 실행하세요 ./pyAES.py.

프로그램을 실행하려면 해당 프로그램에 대한 실행 권한이 있어야 합니다.

chmod +x pyAES.py

존재하는 파일에 "오류 해석기: 해당 파일 또는 디렉터리가 없습니다." 또는 "해당 파일 또는 디렉터리가 없습니다."와 같은 메시지가 표시되면 이는 스크립트에 오류가 있음을 의미합니다.셰르본철사. (바라보다/bin/sh: ./check-dependent.pl: 찾을 수 없지만 check-dependent.pl은 존재합니다!더 자세한 설명을 원하시면. ) shebang 라인은 스크립트의 첫 번째 라인이며 인터프리터의 위치를 ​​나타냅니다.

인터프리터(예: /usr/bin/python또는 )에 대한 경로를 하드코딩하지 않으려면 이 프로그램을 트램폴린으로 /usr/local/bin/python사용할 수 있습니다 ./usr/bin/env

#!/usr/bin/env python

PEP 304#!/usr/bin/env python2Python 2.x에 대한 즉시 참조를 지정합니다 . 그러나 많은 기존 시스템에서 Python 2.x는 이름으로만 사용할 수 있고 이름으로 python는 사용할 수 없습니다 python2. 따라서 둘 사이에 무게를 두어야 할 수도 있습니다. 루트 액세스 권한이 있고 배포판에서 Python 2.x as python또는 만 제공하는 경우 python2다른 이름에 대한 심볼릭 링크를 만듭니다.

": 해당 파일 또는 디렉터리 없음"(콜론 앞에 아무 것도 없음) 오류가 표시되면 Windows에서 편집했기 때문에 shebang 줄 끝에 캐리지 리턴이 있다는 의미입니다. CR:shebang 줄을 제거하려면 Unix가 필요합니다.줄 끝(개행에만 해당).

답변4

시도했을 때 동일한 오류가 발생했습니다.py file1.py

해결책은 간단합니다. 그냥 입력하면 됩니다.python3 file1.py

관련 정보