[英]python script doesn't execute when calling it from shell
我在文件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在远程大学计算机上工作,系统管理员可能会以某种方式阻止这种情况吗?
您需要指定脚本的绝对路径。 尝试
./foo 3 boo
与脚本位于同一目录中。 否则,shell只会在您的PATH
查找不存在的名为foo
东西。
您必须提供文件的路径
./foo
如果仅调用“ foo”,则外壳程序将在环境变量$ PATH中查找包含“ foo”二进制文件的文件夹,而他将找不到它。
我正在使用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
这可能是外壳问题,因为我复制了tcsh外壳&无法运行。
$ tcsh $ ./test ./test: Command not found.
但是它运行,当我像下面那样运行时..
tcsh -c ./test.py
假设您的脚本是可执行文件,并且/ usr / bin / python3中有python3。 我认为您正在尝试从安装有noexec参数的分区运行脚本,以检查是否应运行该问题:
mount | grep <partition> | grep noexec
如果我没错,您可以使用exec选项挂载分区或将脚本移动到其他位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.