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 python2
Python 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