나는 pyAES.py라는 이름의 이 스크립트를 다운로드하여 내 Linux의 데스크톱 디렉터리에 있는 폴더 이름 코드에 넣었습니다.
이 예에 따르면, 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만 제공하거나 python
제공하는 경우 python2
다른 이름에 대한 심볼릭 링크를 만듭니다.
": 해당 파일 또는 디렉터리 없음"(콜론 앞에 아무것도 없음) 오류가 표시되면 Windows에서 편집되었기 때문에 shebang 줄 끝에 캐리지 리턴이 있다는 의미입니다. CR 제거: shebang 라인에는 Unix가 있어야 합니다.줄 끝(라인피드만 해당)
답변4
시도했을 때 같은 오류가 발생했습니다.py file1.py
해결책은 매우 간단합니다. 다음을 입력하면 됩니다.python3 file1.py