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。したがって、両者の間に重さを置く必要があるかもしれません。 root アクセス権があり、ディストリビューションで Python 2.x as のみをpython提供している場合は、python2別の名前へのシンボリックリンクを作成します。

「:対応するファイルまたはディレクトリなし」(コロンの前に何もありません)エラーが表示された場合は、Windowsで編集したため、shebang行の末尾にキャリッジリターンがあることを意味します。 CR:shebang行を削除するにはUnixが必要です。行末(改行のみ)。

答え4

試したときに同じエラーが発生しました。py file1.py

解決策は簡単です。ただ入力してください。python3 file1.py

関連情報