从shell调用python脚本不执行

时间:2018-10-29 17:05:18

标签: python linux tcsh

我在文件foo中有一个python 3程序,该文件具有执行权限,脚本的第一行是

#!/usr/bin/python3

当我直接从python运行文件时,即:

/usr/bin/python3 foo 3 boo

一切运行都很好,但是当我尝试通过调用文件名来运行程序时,我得到了:

foo 3 boo
foo: Command not found.

即使指定脚本的相对或完整路径,我也会得到相同的响应。

./foo 3 boo
./foo: Command not found.

/full/path/to/the/file/foo 3 boo
/full/path/to/the/file/foo: Command not found.

所请求的更多信息:

head -2 foo
#!/usr/bin/python3

which python3
/usr/bin/python3

在tcsh工作,问题出在哪里?

我正在通过ssh在远程大学计算机上工作,系统管理员是否可能以某种方式阻止这种情况发生?

4 个答案:

答案 0 :(得分:3)

您需要指定脚本的绝对路径。尝试

./foo 3 boo

,与脚本位于同一目录中。否则,shell只会在您的PATH中查找不存在的名为foo的东西。

答案 1 :(得分:0)

您必须提供文件的路径

./foo

如果仅调用“ foo”,则外壳程序将在环境变量$ PATH中查找包含“ foo”二进制文件的文件夹,而他将找不到它...

答案 2 :(得分:0)

我正在使用python3,仅是一个示例。.

只是一个测试脚本..

$ cat test.py
#!/python/v3.6.1/bin/python3
import os
print(os.system("ls"))

$ which python3
/python/v3.6.1/bin/python3

允许其可执行。.我不确定脚本foo是否在您的情况下可执行。

$ chmod +x test.py

测试运行..

$ ./test.py
a.py     Backup     File_Write_Method  NWK-old              Python_aritsTest  Python_Ftp   Python_Mail     Python_Primer  test.py
argpass  BASH       Network_DeOps      Python-3.6.3         Python_Dump       Python_FTP   Python_Panda    readme_python  tmp
awk.sh   dnspython  nslookup           Python-3.6.3.tar.xz  Python_excep      Python_ldap  Python_Parsers  Regular_Expr   tt.csv
0

这可能是shell问题,因为我复制了tcsh shell并无法运行。.

$ tcsh
$ ./test
./test: Command not found.

但是它可以运行,当我像下面那样运行时。.

tcsh -c ./test.py

答案 3 :(得分:0)

假设您的脚本是可执行文件,并且/ usr / bin / python3中有python3。我认为您正在尝试从安装有noexec参数的分区中运行脚本,以检查是否应运行该问题:

mount | grep <partition> | grep noexec

如果我对的话,您可以使用exec选项挂载分区或将脚本移动到其他地方。