我已經下載了這個名為 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
。
當您執行任何命令時,在後端 shell 中搜尋 PATH 中的可執行檔/二進位文件,例如。/bin/
/usr/bin/
ETC...
因此,如果路徑定義不正確,那麼您將面臨這個問題。
當您使用“ ./command
”時,它將從當前目錄執行該命令,PATH變數不用於搜尋檔案名
答案3
第一個障礙是您需要告訴 shell 在哪裡可以找到該程式。如果不新增任何目錄指示,則只能執行位於PATH
環境變數描述的可執行搜尋路徑中的可執行檔。當前目錄不在搜尋路徑中,除非您將其放在那裡。所以跑吧./pyAES.py
。
為了運行程序,您必須擁有它的執行權限:
chmod +x pyAES.py
如果您在存在的檔案上收到類似「錯誤解釋器:沒有這樣的檔案或目錄」或只是「沒有這樣的檔案或目錄」的訊息,則表示腳本的錯誤舍邦線。 (看/bin/sh: ./check-dependency.pl: 未找到 — 但 check-dependency.pl 存在!以獲得更詳細的解釋。
為了避免硬編碼解釋器的路徑(例如/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
.所以你可能必須在兩者之間權衡。如果您擁有 root 權限,且您的發行版僅提供 Python 2.x aspython
或僅提供python2
,請建立指向其他名稱的符號連結。
如果您看到錯誤「:沒有這樣的檔案或目錄」(冒號之前沒有任何內容),則表示您的 shebang 行末尾有一個回車符,可能是因為它是在 Windows 下編輯的。刪除 CR:shebang 行需要有 Unix行尾(僅換行)。
答案4
當我嘗試時遇到了同樣的錯誤py file1.py
解決方法很簡單,只要輸入python3 file1.py