web-dev-qa-db-ja.com

/ usr / bin / env: 'python3 \ r':そのようなファイルまたはディレクトリはありません

.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
4
young marx

問題は、行末文字です。ファイルは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はディレクトリであり、実行可能ファイルではないため、これは明らかに失敗するはずです。

14
Byte Commander