web-dev-qa-db-ja.com

Python 3.8スクリプトが突然実行されなくなりますが、Pythonコマンドを直接呼び出すと正常に実行されます

私は完全に困惑し、不思議に思っています。ターミナルからPythonスクリプトを喜んでコーディングして実行しています(また、Pythonインタプリタも実行しています)。Pythonの幸せなユーザを寝かせましたが、突然、シェルからPythonスクリプトを実行できなくなります。

hello.pyに含まれるもの:

#!/usr/bin/python3
print('Hello world!')

まだ突然

% ./hello.py
./hello.py: 1: #!/usr/bin/python3: not found
./hello.py: 2: Syntax error: Word unexpected (expecting ")")

だが

% python3 hello.py 
Hello world!
% python hello.py 
Hello world!

What。The。Zarking。Fardwarks。


ls -la hello.pyは以下を示します。

-rwxrwxr-x 1 Lexible Lexible    44 May 25 08:35  hello.py

@Kulfyによる2つのリクエストごと

% file -k hello.py 
hello.py: Python script text executable\012- a /usr/bin/python3 script, UTF-8 Unicode (with BOM) text executable

% cat -e  hello.py
M-oM-;M-?#!/usr/bin/python3$
print('Hello world!')$

ls -la /usr/bin/python3*は以下を示します。

lrwxrwxrwx 1 root root       9 Mar 13 05:20 /usr/bin/python3 -> python3.8
-rwxr-xr-x 1 root root 5457536 Apr 27 08:53 /usr/bin/python3.8
lrwxrwxrwx 1 root root      33 Apr 27 08:53 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root      16 Mar 13 05:20 /usr/bin/python3-config -> python3.8-config
-rwxr-xr-x 1 root root     384 Mar 27 19:39 /usr/bin/python3-futurize
-rwxr-xr-x 1 root root     388 Mar 27 19:39 /usr/bin/python3-pasteurize

笑い声のために...

% which python
/usr/bin/python
% which python3
/usr/bin/python3

でも...

% python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello world!')
Hello world!
>>>

PS:私はUbuntu 20.04(Focal Fossa)を使用しています。再起動してみましたが、Sudo apt install -f --reinstall python3 python3.8 python3-minimal python3.8-minimal libpython3.8-minimalすべて無効です。

21
Lexible

@Kulfyの丁寧な支援により、問題は私のスクリプトのShebangに先行するレンダリングできないバイトのようです!具体的には、バイトEF BB BFバイトの前に23 21これはスクリプトの開始である必要があります。

そのバイトオーダーマークがどのようにして得られたのかは謎ですが、少なくとも今は:

./hello.py
Hello world!
8
Lexible