Python 具有可执行权限的脚本说 "Command Not Found"

Python script with executable permission says "Command Not Found"

我有一个 python 脚本 abc.py。在 shell 脚本文件中,我称之为 ./abc.py

在 abc.py 里面,在顶部,我有 #!/usr/bin/python

test -x abc.py && echo true || echo false return 真

在执行 shell 脚本时,它显示 ./abc.py: Command not found.

如果我将其称为 python ./abc.py 而不是 ./abc.py

,它会起作用

问题仅出在我今天创建的 abc.py 文件中。同一目录中具有不同用途和名称的旧 python 脚本可以正常工作。

顺便说一句,我提到了文件的正确路径。可能是什么问题?

正在尝试按如下方式复制您的设置:

  1. 文件:asdf.py

    #!/usr/bin/python
    print("Hello World")
    
  2. 文件:asdf.sh

    #!/bin/bash
    if [ -x asdf.py ]; then ./asdf.py ; else echo "Arrrrgh. File does not exist or does not have executable permisions"; fi
    
  3. 现在我将文件保存在同一目录中,例如桌面,使它们可执行并 运行 来自终端的 shell 脚本。

    usr@cmptr $ chmod +x asdf.{py,sh}
    usr@cmptr $ ls -la asdf.{py,sh}
    -rwxr-xr-x 1 usr usr 613 Mar 15 22:22 asdf.py
    -rwxr-xr-x 1 usr usr  56 Mar 15 22:14 asdf.sh
    usr@cmptr $ ./asdf.sh
    Hello World
    

现在,也许我误解了您的设置,但这应该可以正常工作。

tcsh中,解释器无效时会出现这种情况:

$ cat foo
#!/invalid

$ tcsh -c './foo'
./foo: Command not found.

$ bash -c './foo'
bash: ./foo: /invalid: bad interpreter: No such file or directory

这可能有多种原因。也许您的系统路径错误:

% type python
python is /usr/local/bin/python

在这种情况下,脚本需要以 #!/usr/local/bin/python 开头。

或者,脚本可以有 Windows 行结尾(回车符 returns):

$ cat -v foo
#!/usr/bin/python^M
...^M

在这种情况下,请改为使用 Unix 行结尾保存它。