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 脚本可以正常工作。
顺便说一句,我提到了文件的正确路径。可能是什么问题?
正在尝试按如下方式复制您的设置:
文件:asdf.py
#!/usr/bin/python
print("Hello World")
文件: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
现在我将文件保存在同一目录中,例如桌面,使它们可执行并 运行 来自终端的 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 行结尾保存它。
我有一个 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 脚本可以正常工作。
顺便说一句,我提到了文件的正确路径。可能是什么问题?
正在尝试按如下方式复制您的设置:
文件:
asdf.py
#!/usr/bin/python print("Hello World")
文件:
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
现在我将文件保存在同一目录中,例如桌面,使它们可执行并 运行 来自终端的
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 行结尾保存它。