從 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

當您執行任何命令時,在後端 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

相關內容