.py
ファイルを実行可能にして、./filename.py
を使用して実行できるようにしていますが、機能していません。
私がしたことは、シバン#!/usr/bin python3
を追加し、コマンドchmod +x filename.py
を使用することでした。 ./filename.py
を実行すると、通常のユーザーとして、以下のエラーメッセージが表示されます
bash: ./filename.py: /usr/bin: bad interpreter: Permission denied
スーパーユーザーとして、代わりにこれを教えてくれます:
Sudo: unable to execute ./filename.py: Permission denied
通常の方法(python3 filename.py
)でファイルを開くと、正常に機能します。
Shebangを#!/usr/bin/env python3
に変更すると、次のように表示されます。
/usr/bin/env: ‘python3\r’: No such file or directory
問題は、行末文字です。ファイルはWindowsシステムで作成または編集され、Windows/DOSスタイルの行末記号(CR + LF)を使用しますが、UbuntuなどのLinuxシステムではUnixスタイルの行末記号(LF)が必要です。
dos2unix
と呼ばれる2つの異なるスタイルを変換できるシンプルなツールがあります。
実行してインストールする
Sudo apt install dos2unix
その後、次のいずれかのコマンドを使用して、ファイルをどちらの方向にも変換できます
dos2unix /PATH/TO/YOUR/WINDOWS_FILE
unix2dos /PATH/TO/YOUR/LINUX_FILE
例:
$ cat test.py
#!/usr/bin/env python3
print("ok")
$ ./test.py
/usr/bin/env: ‘python3\r’: No such file or directory
$ dos2unix test.py
dos2unix: converting file test.py to Unix format ...
$ ./test.py
ok
最初に試したものに戻るために、シバンライン
#!/usr/bin python3
もちろん間違っています。 /usr/bin
およびスクリプトのファイル名を引数として使用して、ファイルpython3
を実行しようとします。 /usr/bin
はディレクトリであり、実行可能ファイルではないため、これは明らかに失敗するはずです。